我的小部件附带了一个服务来处理通过意图传递的各种点击“命令”。我还设置了
return START_REDELIVER_INTENT;
,以防止在调用intent.getAction()等时出现nullPointerException,这是当服务重新启动时的情况。问题是,当最后一个意图由我设置的其中一个setOnClickPendingIntent调用发送时,当服务重新启动时,它会像用户单击了一个viewId一样操作。例如:String command = intent.getAction();
int appWidgetId = intent.getExtras().getInt(AppWidgetManager.EXTRA_APPWIDGET_ID);
if(command.equals("some command")){
//do something
}
...
remoteView.setOnClickPendingIntent(R.id.viewId,MyClass.makeControlPendingIntent(getApplicationContext(),"some command",appWidgetId));
makeControlPendingIntent是什么:
public static PendingIntent makeControlPendingIntent(Context context, String command, int appWidgetId) {
Intent active = new Intent(context,MyService.class);
active.setAction(command);
active.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
Uri data = Uri.withAppendedPath(Uri.parse("myclass://widget/id/#"+command+appWidgetId), String.valueOf(appWidgetId));
active.setData(data);
return(PendingIntent.getService(context, 0, active, PendingIntent.FLAG_UPDATE_CURRENT));
}
有什么方法可以检查服务是否正在重新启动,以便在Android重新启动我的服务的情况下不运行任何这些命令吗?