2014-04-30 60 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