应用毁坏后,Android服务将进入睡眠模式

时间:2019-03-18 17:02:30

标签: android

sendBroadcast(intent)在应用程序关闭并注释掉Toast消息时没有传递数据,但是当Toast消息在计时器内打开时,它可以正常工作。听起来很有趣,但是需要一个解决方案,在应用程序被销毁时如何运行此服务。

import android.annotation.SuppressLint;
import android.app.Service;
import android.content.Intent;
import android.os.CountDownTimer;
import android.os.IBinder;

@SuppressLint("SetTextI18n")
public class BroadcastService extends Service {

    public static final String COUNTDOWN_BR = "com.example.broadcast_receiver";
    private CountDownTimer _Timer;

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

        _Timer = new CountDownTimer(15000, 1000) {

            public void onTick(long millisUntilFinished) {
                Intent intent = new Intent(COUNTDOWN_BR);
                intent.putExtra("countdown", millisUntilFinished);
                BroadcastService.this.sendBroadcast(intent);
                //Toast.makeText(BroadcastService.this, millisUntilFinished/1000+"", Toast.LENGTH_SHORT).show();
            }

            public void onFinish() {
                _Timer.cancel();
            }
        }.start();

        return START_NOT_STICKY;
    }

    @Override public IBinder onBind(Intent arg0) {
        return null;
    }
}

1 个答案:

答案 0 :(得分:0)

对于您而言,服务由您的应用程序启动,这意味着它将在主进程上运行。因此,在您的应用程序终止时,该服务也会终止。

为了不停止该进程。您可能需要调查服务中的onTaskRemoved。 您可以从onTaskRemoved发送广播以重新启动该服务。

Intent intent = new Intent("com.android.ServiceStopped");
sendBroadcast(intent);