本来想着用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 定时重复启动弹出窗口。的更多相关文章

  1. Android Demo---实现从底部弹出窗口

    在前面的博文中,小编简单的介绍了如何制作圆角的按钮以及圆角的图片,伴着键盘和手指之间的舞步,迎来新的问题,不知道小伙伴有没有这样的经历,以App为例,点击头像的时候,会从底部弹出一个窗口,有从相册中选 ...

  2. 弹出窗口Session丢失、防止表单重复提交问题

    一.弹出窗口Session丢失问题 弹出窗口Session丢失使用window.showModalDialog进行信息的提示,相当方便,也容易控制外观和布局.但是存在一个严重的问题,就是Session ...

  3. 【Android】百度地图自定义弹出窗口

    我们使用百度地图的时候,点击地图上的Marker,会弹出一个该地点详细信息的窗口,如下左图所示,有时候,我们希望自己定义这个弹出窗口的内容,或者,干脆用自己的数据来构造这样的弹出窗口,但是,在百度地图 ...

  4. (转)弹出窗口lhgDialog API文档

    应用到你的项目 如果您使用独立版本的lhgDialog窗口组件,您只需在页面head中引入lhgcore.lhgdialog.min.js文件,4.1.1+版本做了修改可以和jQuerya库同时引用, ...

  5. JSP弹出窗口和模式对话框

    本文转载于其它blog,在此向本文原创者,致意!    JSP 弹出窗口  一.window.open() 基础知识      1.window.open()支持环境:  JavaScript1.0+ ...

  6. [转]js来弹出窗口的详细说明

    1.警告对话框 <script> alert("警告文字") </script> 2.确认对话框 <script> confirm(" ...

  7. 在HTML网页中设置弹出窗口的办法

    [1.最基本的弹出窗口代码] 其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('page.h ...

  8. js弹出窗口总结6种弹窗方法

    注: //关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write("<script language=javascript>window.close(); ...

  9. JS弹出窗口代码大全(详细整理)

    1.弹启一个全屏窗口 复制代码代码如下: <html> <body http://www.jb51.net','脚本之家','fullscreen');">; < ...

随机推荐

  1. 《DSP using MATLAB》示例Example7.6 Type-3 Linear-Phase FIR

    代码: h = [-4, 1, -1, -2, 5, 0, -5, 2, 1, -1, 4]; M = length(h); n = 0:M-1; [Hr, w, c, L] = Hr_Type3(h ...

  2. 【angularJS】Directive指令

    AngularJS 通过被称为 指令 的新属性来扩展 HTML.指令是扩展的 HTML 属性,带有前缀 ng-. 内置指令 1.ng-app 指令初始化一个 AngularJS 应用程序. 定义了 A ...

  3. spring事务中隔离级别和spring的事务传播机制

    Transaction 也就是所谓的事务了,通俗理解就是一件事情.从小,父母就教育我们,做事情要有始有终,不能半途而废. 事务也是这样,不能做一般就不做了,要么做完,要 么就不做.也就是说,事务必须是 ...

  4. java创建多线程&创建进程

    概述 并发和并行是即相似又有区别: 并行:指两个或多个事件在同一时刻发生: 并发:指两个或多个事件在同一时间段内发生. 进程是指一个内存中运行中的应用程序.每个进程都有自己独立的一块内存空间,一个应用 ...

  5. win10下启动zkui

    zkui是一个开源的zookeeper可视化工具,现在看下我们怎么启动这个工具.首先下载源码(我把它放在E:\workspace): git clone https://github.com/Deem ...

  6. jeecg中选择的数据字典

    <t:dictSelect field="fjingji" hasLabel="false" typeGroupCode="fjingji&qu ...

  7. [转]Jsp 页面中的错误

    1. Jsp 语法格式问题,导致其不能被翻译成 Servlet 源文件. 2. Jsp 翻译成 Servlet 源文件后出现的语法格式问题. 3. Jsp 翻译成 Servlet 后运行时发生异常.

  8. TimesTen学习(三)安装、连接、远程连接TimesTen数据库

    TimesTen学习(三)远程连接TimesTen数据库 <TimesTen学习(一)安装篇>:http://blog.itpub.net/23135684/viewspace-71774 ...

  9. 模块初识import sys---- sys.argv--- import os---- os.system("df -h")

    模块分2种,也叫库 1.标准库,直接导入import就可以用 2.第三方库,必须先安装再导入import才能使用 import sys print(sys.path) #打印环境变量 这边有一个注意事 ...

  10. 第七章 伪分布式安装hive,sqoop

    第一部分:先讲这么去安装hive.先去hive官网下载,我这里以hive-0.12.0为例子. 前面第二章讲了安装hadoop,hbase实例,我们继续讲这么安装hive,先说下hive配置文件 一, ...