美文网首页
正确地在 Android Nougat、Oreo 以上跑持续的

正确地在 Android Nougat、Oreo 以上跑持续的

作者: Fred钟辉 | 来源:发表于2017-10-19 15:11 被阅读0次

新的 Service 运行管制

安卓系统从 7.0 开始 (包括 Nougat、Oreo) 慢慢的对后台服务实行了标准的管制。这个设计的出发点是为了更省电,从而带给用户更好的体验。我就在这里很简短的和大家重温怎样在 Nougat,Oreo 以上版本正确地持续的跑后台服务。一些合理的用例包括了维持与服务器的长链接、播放音乐等。

有两个方法。

1. 利用前台服务 Foreground Service

Foreground Service 被认为是用户主动意识到的一种服务。因此,系统会透过通知兰清楚地提醒用户 Service 正在运行。

代码片段

// 这是必须提供的通知.
Notification notification = newNotification(
    R.drawable.icon,getText(R.string.ticker_text),
    System.currentTimeMillis());

Intent notificationIntent = newIntent(this, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent,0);
notification.setLatestEventInfo(this, getText(R.string.notification_title),
    getText(R.string.notification_message),pendingIntent);

startForeground(ONGOING_NOTIFICATION_ID, notification);

2. 把 APP 加入电池优化豁免白名单

在安卓 7.0 或以上,系统添加了一个叫电池优化的配置。用户可以选择性的把 APP 加入其白名单。很明显,如果用户极端地把很多的 APP 加入其白名单,就会弄巧成拙。APP 可以用以下的代码片段来唤起这个配置的界面。但最终确定权还是在用户的手里。为了尊重用户免得让他们受到不必要的打扰,请谨慎使用这个功能。

AndroidManifest.xml

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

代码片段

startActivity(new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS,
    Uri.parse("package:" + getPackageName()));

相关安卓官方文档

对低电耗模式和应用待机模式进行针对性优化

服务 (Service)

相关文章

网友评论

      本文标题:正确地在 Android Nougat、Oreo 以上跑持续的

      本文链接:https://www.haomeiwen.com/subject/rytsqxtx.html