【问题标题】:Service get killed, not for memory reason服务被杀死,不是因为记忆原因
【发布时间】:2013-12-12 09:53:37
【问题描述】:

当我的 Activity 退出时,我在警报中注册了一个待处理的意图,它将在 60 秒内启动一个 NotificationService。 onCreate() 的代码如下:

PlayLogSender.getInstance(this).startSend();

和 startSend():

public void startSend(){
new Thread(){
    @Override
    public void run(){
        log("[thread]started");
        int interval=20;
        try{
            //wait for QTRadioService starting in case of this is a APP launch
            Thread.sleep(interval*1000);
        }catch(Exception e){}
        log("sleep "+s+"s done");
        while(some condition){
            ......
        }
    }
}.run()
}

当 PlayLogSender 的线程完成休眠后,android 杀死了 NotificationService;然后重新启动它并再次杀死它。最后 NotificationService 再也没有起床。我尝试将“间隔”设置为 15,然后一切正常。所以我认为android杀死它并不是因为内存。

有人可以帮忙吗?为什么 Android 会终止我的服务?

【问题讨论】:

    标签: android android-service


    【解决方案1】:

    Thread 上调用run() 不会在单独的线程上运行,而是在调用线程上运行。要在单独的线程中运行,请调用start()

    如果您阻塞主线程太久,Android 会终止您的服务。

    【讨论】:

      【解决方案2】:

      你能显示你的日志吗?可能是 ANR。

      【讨论】:

      • 我不应该直接调用 run()。还是谢谢你。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-04
      • 2013-05-19
      • 2013-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多