如何使用ProgressDialog保持屏幕显示?

时间:2014-04-30 13:03:17

标签: android window progressdialog

我正在运行ProgressDialog,并且我不希望在此ProgressDialog运行时屏幕熄灭。我该怎么用?我应该使用Windows功能,还是类似的东西?

3 个答案:

答案 0 :(得分:5)

我找到了解决方案。

你应该使用类似的东西:

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

这对我有用。

答案 1 :(得分:2)

键入以下行oncreate方法

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

答案 2 :(得分: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