申请还活着吗? android(处理程序问题)

时间:2012-12-13 18:49:50

标签: android android-activity android-handler

handler.postDelayed(new Runnable() {
            public void run() {
                if (MainTab.isRunning == true)
                    ;
                {
                    Dialog.show();
                }
            }
        }, Sec * 1000);

isRunning是一个变量,在我的活动中,无论何时调用onStop或onPause方法,它都变为false。然而它不起作用,即使我关闭我的应用程序Dialog仍然想要添加一个窗口,我收到错误。

2 个答案:

答案 0 :(得分:1)

删除额外的;

handler.postDelayed(new Runnable() {
            public void run() {
                if (MainTab.isRunning == true)
                {
                    Dialog.show();
                }
            }
        }, Sec * 1000);

它会导致你的if语句变得无用,因为它指示java将下一行解释为新指令,而不是if语句的一部分。

答案 1 :(得分:0)

即使现在什么都不做,你的回调仍会执行,这是不必要的。您应该在onPause()中使用removeCallbacksAndMessages()取消回调:

handler.removeCallbacksAndMessages(null);

或保存对runnable的引用并致电handler.removeCallback(runnable)