1

我有一个需要停止并重新启动的 android 服务。在服务中onDestroy(),我有一些可能需要一段时间才能执行的清理代码。

是否可以通知正在使用该服务的应用程序已完成执行onDestroy()?或者应用程序可以做些什么来检查它是否onDestroy()已经完成了执行?

4

1 回答 1

2

是的,在 onDestroy() 方法中使用广播!

Intent intent = new Intent( "Service_destroyed" );
// You can also include some extra data.
intent.putExtra("message", "Service is destroyed!");
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

这将通知其他活动。请务必先在活动中注册广播,并在不再需要时取消注册。

登记:

LocalBroadcastManager.getInstance(this).registerReceiver(mServiceDestroyedReceiver, new IntentFilter(  "Service_destroyed"  ));

这是捕获广播的方法:

private BroadcastReceiver mServiceDestroyedReceiver= new BroadcastReceiver() {

      @Override
      public void onReceive(Context context, Intent intent) {
        // Get extra data included in the Intent
        String message = intent.getStringExtra("message");
        Log.d(TAG, "Service is destroyed message: " + message);
      }
};

注销广播接收器:

LocalBroadcastManager.getInstance(this).unregisterReceiver( mServiceDestroyedReceiver);
于 2013-09-06T01:42:28.353 回答