2014-04-30 62 views
0

我有一個ProgressDialog正在運行,並且我不希望在ProgressDialog運行時屏幕熄滅。我應該使用什麼?我應該使用Windows功能還是類似的?如何使用ProgressDialog保持屏幕?

+0

你可以在任何視圖上使用setKeepScreenOn(布爾標誌)。 – NaserShaikh

回答

3

我找到了解決方案。

你應該使用類似的東西:

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

爲我工作。

0

某些應用需要保持屏幕打開狀態,例如遊戲或電影應用。做到這一點的最佳方式是在您的活動中使用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); 
    } 

這種方法的優點是,不像喚醒鎖定(在Keep the CPU On討論),它不需要特殊的權限,平臺正確管理用戶應用程序之間移動,而無需您的應用程序需要以擔心釋放未使用的資源。

另一種方式來實現,這是在應用程序的佈局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).

多見於:http://developer.android.com/training/scheduling/wakelock.html#screen

+0

明白了。但是我不能在對話框中使用該標誌嗎?因爲我想讓對話框打開屏幕,而不是活動。 – Jonas452

2

,鍵入以下行onCreate方法

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

這將使我的活動使屏幕,而不是ProgressDialog。 – Jonas452