我的窗口小部件附加了一個服務,用於處理通過其意圖傳遞的各種點擊「命令」。我還設置了return START_REDELIVER_INTENT;
用於重新啓動服務時在調用intent.getAction()時不給出nullPointerException的情況。等等。問題是,當最後一個意圖是由我有的一個setOnClickPendingIntent調用發送的,那麼當服務重新啓動時,就好像用戶點擊了其中一個viewId一樣。例如Android:使用START_REDELIVER_INTENT標記檢測重新啓動的服務
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的重新啓動我的服務的情況下,這些命令的?
在這種情況下,它可能更有意義返回START_STICKY和檢查爲NULL意圖。 – paul