备选方案
首先,官方提供了一些功能来满足我们开发一些特定功能的需求。
- 如果要执行一个长时间的下载任务,使用 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 中申明。
<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 工作
首先要加一个权限:
<uses-permission android:name="android.permission.WAKE_LOCK" />
接下来有两种使用方法。
第一种是手动获取 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,算了看了下文档,说是已经弃用了,就不介绍了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。