0

我正在尝试提供一项服务以在后台无限期地继续工作,如果它结束,则自行重新启动。运行良好一段时间,但 30 或 40 分钟后停止发送信号,但服务仍在列表中继续。并且永远不会进入 OnDestroy()。

我不知道android是真的停止还是只是暂停。我想不要停下来,因为我等了很长时间,再也没有表现出生命的迹象。这是我的代码的一部分。测试原因,干脆做一个无限循环,每分钟在通知栏显示一条消息。

   public int onStartCommand(Intent intent, int flags, int startId) {

      Log.i("Timer", "Service starting" );


      new Thread(new Runnable() { 
            public void run() {
                Runit();
            }
        }).start();

      return START_STICKY;
  }

 private void Runit(){

      Log.i(getClass().getSimpleName(), "Timer started.");
      try {

          while (true){
              Thread.sleep(60000);
              iTimer += 1;                   
              new Thread(new Runnable() { 
                  public void run() {
                      SendNotification("Timer "+String.valueOf(iTimer));
                  }
              }).start();

          }

      } catch (InterruptedException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
        SendNotification(e1.getMessage());

      }

    SendNotification("Service Stop");

}

我使用 startForeground() 进行了另一次测试,因此持续了两天的工作直到我停止它。但我不想显示在通知栏中。

它停止工作的原因是什么?android暂停还是停止?

4

1 回答 1

0

当 android 需要释放一些内存时,它会杀死占用该内存的进程。暂停没有多大意义,因为暂停的进程仍然可以锁定资源。

您的测试用例无效 - 没有理智的人会在移动设备上进行繁忙循环。如果您每分钟都需要做某事,请设置重复警报并尽可能快地完成您的工作。

于 2012-12-03T19:29:32.773 回答