我有一个带有前台服务的android应用程序 ServiceMain
使用以下代码。
public class AppState {
public static Handler handler = new Handler (Looper.getMainLooper());
public static int someNumber = 30;
}
public class ServiceMain extends Service {
...
private class Checker implements Runnable {
...
public void post () {
...
AppState.handler.postDelayed (this, time);
...
}
public void run () {
...
}
...
}
...
}
通常在应用程序启动后不久,变量 someNumber
由用户设置为其他内容。然而,在这些情况下,仍然很少发生 someNumber
再次等于30,并且当 Checker.run()
被执行。 Checker.run()
仍然像预期的那样表现 someNumber
等于30,例如产生声音和发送短信。但是,应用程序不再响应,看起来好像重新启动了。
我认为这是因为 postDelayed()
执行,然后部分应用程序崩溃并重新启动(这就是为什么 someNumber
设置回30),但 Checker
保留在活套中,并在此重新启动后运行。
我想不惜一切代价防止这种行为,尤其是在我试图找出应用程序崩溃的原因之前。我想我应该在一开始做些检查 run()
如果此检查报告应用程序已崩溃或已重新启动, run()
应该简单地完成,而不是做正常的工作。但是,我可以做什么检查?我不希望此检查依赖于用户手动更改的变量 someNumber
.
当静态变量被重新初始化时,我们能对应用程序的状态说些什么,但活套仍保留其延迟的任务?
暂无答案!
目前还没有任何答案,快来回答吧!