运行应用程序时电话唤醒

时间:2015-11-26 11:04:25

标签: android

我实现了一个应用程序并且它正常工作。现在我想知道如何防止睡觉手机,特别是应用程序正在运行。我试图使用唤醒锁来实现我现在想要实现在给定时间后运行屏幕保护程序并再次触摸屏正常运行当前应用程序。因为使用唤醒锁手机唤醒直到应用程序运行。但是用户离开几次我想运行屏幕保护程序直到重新开始

2 个答案:

答案 0 :(得分: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);
  }

另一种实现方法是在应用程序的布局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>

保持CPU开启

如果在设备进入休眠状态之前需要保持CPU运行以完成某些工作,则可以使用名为唤醒锁的PowerManager系统服务功能。唤醒锁允许您的应用程序控制主机设备的电源状态。

创建和保持唤醒锁定会对主机设备的电池寿命产生巨大影响。因此,只有在严格必要时才应使用唤醒锁,并尽可能短地保持它们。例如,您永远不需要在活动中使用唤醒锁定。如上所述,如果要在活动中保持屏幕显示,请使用FLAG_KEEP_SCREEN_ON。

使用唤醒锁定的一个合法案例可能是后台服务需要获取唤醒锁定以保持CPU在屏幕关闭时运行。但是,再次,这种做法应该最小化,因为它会影响电池寿命。

要使用唤醒锁,第一步是将WAKE_LOCK权限添加到应用程序的清单文件中:

<uses-permission android:name="android.permission.WAKE_LOCK" />

如果您的应用包含使用服务进行某些工作的广播接收器,您可以通过WakefulBroadcastReceiver管理唤醒锁定,如使用WakefulBroadcastReceiver中所述。这是首选方法。如果您的应用不遵循该模式,则以下是直接设置唤醒锁的方法:

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
        "MyWakelockTag");
wakeLock.acquire();

要释放唤醒锁定,请致电wakelock.release().这将释放您对CPU的声明。一旦您的应用程序完成使用它以避免耗尽电池,请务必释放唤醒锁定。

答案 1 :(得分:0)

在清单中添加此权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

并在你的onCreate中添加:

@Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);    
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }