Android 意图服务在启动后完成

Android intent service is finished after start

我有这个 Intent 服务:

    public class MyIntentService extends IntentService {
    public static final String TAG = "MyIntentService";

    private TimerTask timerTask;
    private Timer timer;

    public MyIntentService() {
        super("MyIntentService");
    }

    public static void startService(Context context) {
        Log.d(TAG, "startService: ");
        Intent intent = new Intent(context, MyIntentService.class);
        context.startService(intent);
    }
    
    @Override
    public void onCreate(){
        super.onCreate();
        Log.d(TAG, "onCreate: ");
        timer = new Timer();
        timerTask = new TimerTask() {
            @Override
            public void run() {
                Log.d(TAG, "run: service");
            }
        };
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: ");
        timer.cancel();
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        Log.d(TAG, "onHandleIntent: ");
        timer.scheduleAtFixedRate(timerTask, 0, 5000);
    }
}

当我使用 MyIntentService.startService(getApplicationContext()); 从 activity 调用函数 startService 时,服务启动但立即结束。

2022-05-04 15:24:58.449 6809-6809/myapplication D/MyIntentService: startService: 
2022-05-04 15:24:58.465 6809-6809/myapplication D/MyIntentService: onCreate: 
2022-05-04 15:24:58.466 6809-6838/myapplication D/MyIntentService: onHandleIntent: 
2022-05-04 15:24:58.467 6809-6839/myapplication D/MyIntentService: run: service
2022-05-04 15:24:58.467 6809-6809/myapplication D/MyIntentService: onDestroy: 

当我删除 timer.cancel();从析构函数中,计时器继续工作,但服务看起来已经死了。我认为该服务是通过调用停止服务来结束的——那么为什么在这种情况下结束呢? 非常感谢你 D

一旦 onHandleIntent() returns,您的服务将被关闭。 IntentService 不仅已弃用,而且也不适合您的用例。

如果您觉得需要每五秒做一次工作,请使用常规 Service 作为前台服务(并为出现问题做好准备,因为 Google、设备制造商和用户都这样做不像那些尝试每五秒钟工作一次的应用程序,所有应用程序都会采取措施阻止你,以节省电池寿命。