Android - keep the device awake

备选方案

首先,官方提供了一些功能来满足我们开发一些特定功能的需求。

  • 如果要执行一个长时间的下载任务,使用 DownloadManager
  • 如果要和服务器 sync 数据,使用 Sync adapter
  • 依赖一些 service 做一些后台工作,可以使用 JobScheduler

如果上面的功能满足不了你的需求,才考虑使用 wake lock。

保持屏幕常亮

保持屏幕常亮的方法很简单,在 Activity 中增加 flag 即可。

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 中申明。


    ...

保持 CPU 工作

首先要加一个权限:

接下来有两种使用方法。

第一种是手动获取 wake lock

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

手动获取 wake lock,后执行自己的操作。再通过 wakeLock.release() 释放。

第二种方式是使用WakefulBroadcastReceiver,算了看了下文档,说是已经弃用了,就不介绍了。

你可能感兴趣的:(android)