Intent intent = new Intent();
intent.setClass(context,SomeActivity.class);
PendingIntent pending = PendingIntent.getActivity(context,requestCode,intent,PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarm = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, someDistantMillis, someIntervalInMillis,pending);
它的工作原理確定,那就是活動在someDistantMillis
推出後someIntervalInMillis
一再推出的唯一的問題是,如果SomeActivity
已經在someIntervalInMillis
之後運行,則在堆棧頂部啓動另一個SomeActivity
實例。
下面是簡要我想達到的目標:
- Strart,
AlarmManager
叫 - 如果
SomeActivity
實例已經然後運行轉到4),否則,轉至3) - 啓動
SomeActivity
,結束 - 什麼都不做,結束
任何想法應該怎麼做,o r Intent
包含哪些標誌(FLAG_ACTIVITY_SINGLE_TOP
似乎不起作用)?
嘗試在manifest中的activity標籤中添加'android:launchMode =「singleInstance」''。 –
SomeActivity是您的應用程序的根活動(ACTION = MAIN和CATEGORY = LAUNCHER)嗎? –
@PankajKumar請不要建議'launchMode =「singleInstance」'而不要先獲取大量其他數據。使用此啓動模式可能會解決此特定問題,但可能會爲用戶創建大量其他問題。通常,singleInstance啓動模式只能用於非常特殊的情況(例如:HOME屏幕替換)。恕我直言,這是不好的建議。 –