检查发布的runnable应用程序是否同时“重新启动”

llmtgqce  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(259)

我有一个带有前台服务的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 .
当静态变量被重新初始化时,我们能对应用程序的状态说些什么,但活套仍保留其延迟的任务?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题