Android 定时重复启动弹出窗口。
本来想着用handlerpostdelay就可以实现,没想到演示后关闭应用居然报错。
后来想到是没有了activity。
((Activity)context).isFinishing()
可以传入context,再强转成activity。判断此acitvity是否存在,之后就可有去放心的弹出了。
通过sharedpreference判断是否购买。
public class MyDialog {
static SharedPreferences myShare;
public static boolean isShowing = false;
public static void showAlert(final Context context) {
myShare = context.getSharedPreferences("billingShared", 0x0002);
if (!myShare.contains("isBilling")) {
Log.d("sharedpre", "sharedpreferce is created!!");
SharedPreferences isBilling = context.getSharedPreferences(
"billingShared", 0x0002);
Editor editor = isBilling.edit();
editor.putBoolean("isEnable", true);
editor.putBoolean("isBilling", false);
editor.commit();
}
boolean isBilling = myShare.getBoolean("isBilling", false);
boolean isEnable = myShare.getBoolean("isEnable", false);
if (!isBilling || !isEnable) {
Log.d("Mytest", "------>>>>>" + ((Activity) context).isFinishing());
Log.d("Mytest", "------>>>>>" + isShowing);
Log.d("Mytest", "------>>>>>" + ((Activity) context).toString());
if (!isShowing) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (!((Activity) context).isFinishing()) {
Log.d("Mytest", "------>>>>>running");
Log.d("Mytest", "------>>>>>"
+ ((Activity) context).isFinishing());
new AlertDialog.Builder(context)
.setMessage(
" 请支持开发者,乐捐即能正常使用!! ")
.setCancelable(false)
.setPositiveButton("乐捐",
new OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,
int which) {
boolean isBilling = true;
if (isBilling) {
Editor editor = myShare
.edit();
editor.putBoolean(
"isBilling",
isBilling);
editor.commit();
Toast.makeText(
context,
"乐捐成功。",
Toast.LENGTH_LONG)
.show();
dialog.dismiss();
isShowing = false;
} else {
Toast.makeText(
context,
"乐捐未成功",
Toast.LENGTH_SHORT)
.show();
}
}
})
.setNegativeButton("取消",
new OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,
int which) {
dialog.dismiss();
dialog.cancel();
isShowing = false;
MyDialog.showAlert(context);
}
}).show();
isShowing = true;
}
}
}, 8000L);
}
}
}
}
Android 定时重复启动弹出窗口。的更多相关文章
- Android Demo---实现从底部弹出窗口
在前面的博文中,小编简单的介绍了如何制作圆角的按钮以及圆角的图片,伴着键盘和手指之间的舞步,迎来新的问题,不知道小伙伴有没有这样的经历,以App为例,点击头像的时候,会从底部弹出一个窗口,有从相册中选 ...
- 弹出窗口Session丢失、防止表单重复提交问题
一.弹出窗口Session丢失问题 弹出窗口Session丢失使用window.showModalDialog进行信息的提示,相当方便,也容易控制外观和布局.但是存在一个严重的问题,就是Session ...
- 【Android】百度地图自定义弹出窗口
我们使用百度地图的时候,点击地图上的Marker,会弹出一个该地点详细信息的窗口,如下左图所示,有时候,我们希望自己定义这个弹出窗口的内容,或者,干脆用自己的数据来构造这样的弹出窗口,但是,在百度地图 ...
- (转)弹出窗口lhgDialog API文档
应用到你的项目 如果您使用独立版本的lhgDialog窗口组件,您只需在页面head中引入lhgcore.lhgdialog.min.js文件,4.1.1+版本做了修改可以和jQuerya库同时引用, ...
- JSP弹出窗口和模式对话框
本文转载于其它blog,在此向本文原创者,致意! JSP 弹出窗口 一.window.open() 基础知识 1.window.open()支持环境: JavaScript1.0+ ...
- [转]js来弹出窗口的详细说明
1.警告对话框 <script> alert("警告文字") </script> 2.确认对话框 <script> confirm(" ...
- 在HTML网页中设置弹出窗口的办法
[1.最基本的弹出窗口代码] 其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.h ...
- js弹出窗口总结6种弹窗方法
注: //关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write("<script language=javascript>window.close(); ...
- JS弹出窗口代码大全(详细整理)
1.弹启一个全屏窗口 复制代码代码如下: <html> <body http://www.jb51.net','脚本之家','fullscreen');">; < ...
随机推荐
- LeetCode Best Time to Buy and Sell Stock with Transaction Fee
原题链接在这里:https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/descripti ...
- vw+vh+rem响应式布局
科普下: 平时很少用的css单位: 1.长度单位: rem:相对长度单位.相对于根元素(即html元素)font-size计算值的倍数; vw:相对于视口的宽度.视口被均分为100单位的vw; vh: ...
- ldo的一些参数理解
psrr是衡量ldo抑制外来信号噪声的能力,而内部噪声是由基准电压和误差放大器引入的.通常器件手册说的输出噪声指的就是内部噪声. ldo的暂态响应也是一个重要指标
- Nchan 安装试用(openresty 同时支持)
备注: 使用nginx最新的源码包(nginx-1.13.6),以及源码安装 1. 下载源码包(nginx+ Nchan) https://nginx.org/download/ng ...
- CentOS下编译安装LNMP环境
一.卸载系统预安装的LAMP软件 rpm -qa|grep httpd rpm -e httpd httpd-tools rpm -qa|grep mysql rpm -e mysql mysql-l ...
- 关于1024:堆栈下溢的错误(1024. Stack Underflow Occurred)
http://blog.163.com/sylar_lin/blog/static/192332093201111242412487/ 今天碰到个很奇怪的问题,注释掉下面的trace,realse版本 ...
- SharePoint无法搜索解决
重启服务器后,站点搜索时提示错误,无法进行搜索,进入管理中心搜索管理看到,"查询处理"出错. 解决方法: 停止搜索服务,重新启动,如下图所示 重启服务后,过了几分钟重新查询,查询正 ...
- socket 阻塞,同步、I/O模型
1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式: 同步: 所谓同步,就是在发出一个功能调用时, ...
- python查找字符串 函数find() 用法
sStr1 = 'abcdefg' sStr2 = 'cde' print sStr1.find(sStr2) 输出 2意思是在sStr1字符里的第2位置找到了包含cde字符的字段
- UE4 代码总结
1.创建关卡类 1.创建C++类继承LevelScriptActor 2.打开关卡蓝图 Class Settings->Parent Class 选择你之前创建好的C++类 遇到的问题: 1.T ...