Skayred, 我相信我有完全相同的情況。然而,我注意到,當手機睡着了,新的意圖被髮送到活動,它不會啓動活動,直到屏幕上(爲我的目的,我想要的屏幕上)。
我的解決方案是在我的C2DM接收器中獲取喚醒鎖。
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
mWakeLock.acquire();
當然,一定要在你的活動,以釋放mWakeLock.release()鎖。
這是奇怪的行爲,它似乎不符合其他Android活動行爲。在我的情況下,我正在使用singleTask活動(我不確定您使用的是哪種類型的活動,您沒有說明)。如果沒有在堆棧的頂部的活動的一個實例,且手機是睡着了我的活動將啓動,我可以使用下面在OnCreate():
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
但是,如果活動是堆棧的頂部和手機處於睡眠狀態,直到打開屏幕纔開始活動。希望這對你有用。如果你不需要屏幕出現,我會嘗試使用其他的喚醒符號。
我會建議不要僅在onCreate中更新您的UI,但也可以使用onResume。不過,我覺得這個問題太模糊了,我不確定我們有什麼需要回答的。給一些活動代碼,主要方法。 – Snicolas 2012-03-22 05:09:12
電話被鎖定,並且活動似乎在前臺並且沒有重新啓動,onResume',onCreate'和'onNewIntent'不被調用 – skayred 2012-03-22 05:21:00
您可能會考慮使用服務,也許有一些網絡鎖定以確保您仍然收到c2dm通知。 – Snicolas 2012-03-22 05:25:25