在我的應用程序中有一個廣播接收器,在特定的時間由RTC_WAKEUP的鬧鐘調用。該接收器首先獲取部分鎖定,以便它不會終止,然後檢查條件,如果它是真實的,則啓動一個活動,通過獲取完全鎖定和解鎖鍵盤鎖,完全打開手機。WakeLock Mechanism
經過一些測試和試用後,我發現廣播接收機的生命週期在開始活動之前結束,並且一旦它結束,部分鎖定被釋放。
所以我想如果該設備是睡眠,將在活動開始這樣 它可以獲取全鎖?
或者只要廣播接收器結束設備就會回到 睡眠和活動的開始推遲到它再次醒來時?
在我的應用程序中有一個廣播接收器,在特定的時間由RTC_WAKEUP的鬧鐘調用。該接收器首先獲取部分鎖定,以便它不會終止,然後檢查條件,如果它是真實的,則啓動一個活動,通過獲取完全鎖定和解鎖鍵盤鎖,完全打開手機。WakeLock Mechanism
經過一些測試和試用後,我發現廣播接收機的生命週期在開始活動之前結束,並且一旦它結束,部分鎖定被釋放。
所以我想如果該設備是睡眠,將在活動開始這樣 它可以獲取全鎖?
或者只要廣播接收器結束設備就會回到 睡眠和活動的開始推遲到它再次醒來時?
如果你想開始在廣播接收器的活動,不要忘記添加標誌:FLAG_ACTIVITY_NEW_TASK
public void onReceive(Context context, Intent i) {
if (check condition) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(context,THE_ACTIVTY_YOU_WANT_TO_START.class);
context.startActivity(intent);
}
}
使用FULL_WAKE_LOCK以武力打開屏幕,在onCreate()方法中添加以下代碼來執行此操作。
pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
km = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
kl = km.newKeyguardLock("info");
wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "info");
kl.disableKeyguard();
,同時期待通過GCM手冊我發現下面的章節:
http://developer.android.com/google/gcm/gcm.html#handling_intents
我認爲你必須將收購的激活鎖定,同時還在廣播接收器#的onReceive之中。他們在IntentService中使用靜態WakeLock。
我認爲你的應用程序被設計爲在特定的時間啓動一個活動,就像本機鬧鈴一樣,不是嗎? – Huang
@黃是的,這是一個提醒,但我想在開始活動之前檢查簡單的離線狀況。是否有任何源代碼可用於檢查警報活動?我找不到一個。我想看看我是否做對了。 – Ali