我有一個只在設備屏幕熄滅時纔開始工作的應用程序。我已經設置了廣播接收機(Intent.ACTION_SCREEN_OFF
),它工作正常。設備屏幕熄滅時,我總是在我的LOGCAT中獲得記錄。到現在爲止還挺好。如何在屏幕熄滅時開始活動?
我的onReceive
代碼來自ACTION_SCREEN_OFF使用一些代碼計算的東西,並且都執行良好(當屏幕關閉時)。到現在爲止還挺好。
在我的onReceive
代碼結束時,我開始新的活動,但目標活動的onCreate
並不總是執行。 (例如,在我的HTC Desire 2.3.7上工作正常,在HTC Wildfire S 2.3.5,Xperia Arc S 2.3.4,它不執行,在三星Galaxy ACE 2.2.1上,它取決於有時執行有時isn' T)。我的LOGCAT顯示onReceive
執行到最後,但Activity未啓動。我用下面的代碼來開始這個活動:
Intent startH_Activity = new Intent(getApplicationContext(), HandleActivity.class);
startH_Activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startH_Activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startH_Activity);
重要的事情需要注意:
我說,上面提到的一些手機不能正常工作。那麼它不會立即工作,就像它應該(SCREEN_OFF發生時)。總是活動開始時間..屏幕關閉後10-15分鐘(這是不可接受的)
當屏幕關閉,活動未啓動,如果我按設備上的電源按鈕,它立即引發我的目標活動和應用程序正常工作。 (再次這是不可接受的,它應該自動啓動)。
當任何設備連接到PC時,它的工作方式應該如此。活動在屏幕熄滅後立即開始。
在閱讀了很多堆棧溢出之後,我意識到這是因爲MAYBE設備進入睡眠狀態。這就是爲什麼如果我按下POWER按鈕它會像正常工作,或者10-15分鐘後自動喚醒,因爲它同步或什麼。所以我使用了WAKELOCK。
//OnCreate Service
powMan = (PowerManager) getSystemService(POWER_SERVICE);
wake = powMan.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
//OnReceive (screen goes off)
wake.acquire();
但仍然沒有成功。 (我做錯了嗎?)即使喚醒鎖被獲取,我的活動也不會顯示在這些設備上。
基本上我在問什麼。如何在屏幕熄滅時打開常規活動?或者至少如何開啓屏幕,如果活動不會開始(記住,按下電源按鈕顯示我的活動
我現在真的需要一些幫助,因爲我對此感到非常沮喪。 。對於
屏幕關閉!指屏幕鎖定? http://chandan-tech.blogspot.in/2010/10/handling-screen-lock-unlock-in-android.html – Raghunandan 2013-04-05 18:08:57
其實是的。我認爲屏幕熄滅時所有設備都會鎖定。 – rootpanthera 2013-04-05 18:37:39