2015-09-28 98 views
-1

我在應用程序中擁有WAKE_LOCK權限,隨後我將其刪除。但是當我的應用程序處於活動狀態時,手機仍然不會關閉屏幕。有沒有其他的設置可能會阻止手機關機?刪除了喚醒鎖,但當應用程序處於活動狀態時,屏幕仍未關閉

+1

如果你下來表決權的問題請提供意見說明原因。否則,我不聰明。 – rajath

+0

「有沒有其他的設置可能會阻止手機關機」。在您評論和查看倒票後,我的結論是:您讓人們猜測您可能使用了什麼,而不是顯示您曾經使用過哪些可能導致問題的東西。 –

+0

@SyedNazarMuhammad,如果有人希望我分享3000行代碼,他們很愚蠢,因爲我不知道代碼中的效果是在哪裏。 – rajath

回答

3

有一對夫婦的「設置」,可以防止屏幕進入休眠狀態,根據the docs

某些應用需要保持屏幕開啓時,如遊戲或電影 應用。這樣做的最好方法是使用您的活動中的 中的FLAG_KEEP_SCREEN_ON(並且只能在活動中使用,而不能在服務或其他 應用程序組件中使用)。例如:

public class MainActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    } 

這種方法的優點是,不像喚醒鎖定(在 討論保持在CPU上),它不需要特別許可,並 平臺正確地管理用戶應用程序之間移動, 沒有你的應用程序需要擔心釋放未使用的資源。

實現這個另一種方式是在應用程序的佈局XML文件 ,使用了android:keepScreenOn屬性:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:keepScreenOn="true"> 
    ... 
</RelativeLayout> 

採用Android:keepScreenOn = 「true」 是等同於使用 FLAG_KEEP_SCREEN_ON。您可以使用最適合您的 應用的方法。在您的 活動中以編程方式設置標誌的優點是,它使您可以選擇稍後以編程方式清除標誌 ,從而允許屏幕關閉。

注意:您不需要清除FLAG_KEEP_SCREEN_ON標誌,除非你 不再需要屏幕停留在你運行應用程序(例如 ,如果你想在屏幕超時的 一段時間後活動)。窗口管理器負責確保在應用程序進入後臺或返回到 前臺時發生正確的事情。但是,如果你想明確地清除該標誌,從而 讓屏幕再次關閉,使用clearFlags():

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON). 

激活鎖定是另一種,但既然你已經知道這件事,我不我認爲我需要在這裏提一提。

+0

這很完美 - 謝謝。代碼中正在使用FLAG_KEEP_SCREEN_ON。 – rajath

+0

看到這就是爲什麼你得到了下調票,你應該在問題中提到我已經使用了這個標誌,這可能是問題嗎? –

+0

@SyedNazarMuhammad他不知道問題出在那裏,所以你不能指望他分享那個特定的代碼 –

0

爲了避免耗盡電池,閒置的Android設備很快就會入睡。但是,有時候應用程序需要喚醒屏幕或CPU並保持清醒狀態才能完成某些工作。

用途:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

這種方法比激活鎖定更加有效和犯規不需要任何許可

,並清除標誌:

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON). 
相關問題