保活怎么做
现在的实现应用保活保活不像以前,需要用很多黑科技来帮助我们实现,比如1像素技术、双进程守护,而现在的保活需要遵循谷歌官方文档的资料来进行,更多的反而是放在实现应用保活用户端了。
比如安卓官方文档在后台限制
中是这么说的:
在后台中运行的 Service 会消耗设备资源,这可能会降低用户体验。 为了缓解这一问题,系统对这些 Service 施加了一些限制。
如果满足以下任意条件,应用将被视为处于前台:
具有可见 Activity(不管该 Activity 已启动还是已暂停)。
具有前台 Service。
另一个前台应用已关联到该应用(不管是通过绑定到其中一个 Service,还是通过使用其中一个内容提供程序)。 例如,如果另一个应用绑定到该应用的 Service,那么该应用处于前台:
IME(输入法)
壁纸 Service
通知侦听器
语音或文本 Service
如果以上条件均不满足,应用将被视为处于后台。
所以根据以上条件,开发者们想出来了的保活方案
- 前台服务
- 后台播放无声音乐
- 傀儡通知
即使开发者做到以上功能,也不能保证实现应用保活就能存活,因为保活和省电不能兼得。
现在的保活想要做的比较好,还需要从用户层面进行考虑。 比如:
- 忽略电池优化
- 允许自启动
- 手机管家app的白名单
忽略电池优化
默认的程序是允许电池优化的,优化的目的就是防止程序在后台偷偷的耗电,我们也见过部分应用有下面的这个功能。
这就是在向用户申请忽略电池优化,当用户进行允许后,可以适当的延长实现应用保活的存活时间。这样就不需要用户在应用和通知->高级->特殊应用权限->电池优化中找到该应用忽略电池优化这种繁琐的步骤了。
如何使用呢?
- 在AndroidManifest.xml 中申请权限,不需要动态权限。
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
- 申请忽略电池优化
@RequiresApi(api = Build.VERSION_CODES.M)
public void requestIgnoreBatteryOptimizations() {
try {
Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}
}
- 判断是否开启电池优化
@RequiresApi(api = Build.VERSION_CODES.M)
private boolean isIgnoringBatteryOptimizations() {
boolean isIgnoring = false;
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
if (powerManager != null) {
isIgnoring = powerManager.isIgnoringBatteryOptimizations(getPackageName());
}
return isIgnoring;
}
婚恋交友系统源码这样就完成保活啦。
声明:本文由云豹科技转发自Android唐浮博客,如有侵权请联系作者删除