我正在运行ProgressDialog,并且我不希望在此ProgressDialog运行时屏幕熄灭。我该怎么用?我应该使用Windows功能,还是类似的东西?
答案 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