我有一个需要停止并重新启动的 android 服务。在服务中onDestroy()
,我有一些可能需要一段时间才能执行的清理代码。
是否可以通知正在使用该服务的应用程序已完成执行onDestroy()
?或者应用程序可以做些什么来检查它是否onDestroy()
已经完成了执行?
是的,在 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);