停止 Android 服务的常见方法是使用 stopSelf() 方法。但是,有时候 stopSelf() 方法可能无法停止服务。这通常是因为服务正在执行耗时操作或被其他组件绑定导致的。
为了解决这个问题,可以使用以下方法:
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy: Service Destroyed");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand: Service Started");
// 检查服务是否可以停止
if (startId == 1) {
stopSelf();
}
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onDestroy: Service Destroyed");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand: Service Started");
// 启动异步任务执行耗时操作
new MyTask().execute();
return START_STICKY;
}
private class MyTask extends AsyncTask {
@Override
protected Void doInBackground(Void... voids) {
// 执行耗时操作
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// 耗时操作完成后停止服务
stopSelf();
}
}
通过上述方法,可以解决 Android 服务 stopSelf() 方法无法停止服务的问题。