华为后台保活
首先明确一个问题——保的什么活?活就是活性,主要有两点:一、APP的虚拟机进程不被杀死。二、可以执行代码。需求就是就么简单。一个是进程活性,另一个是代码活性。失去进程活性,APP名存实亡,只存在一点点内存缓存,比直接划掉好一点点。失去代码活性,APP丢失权柄,令不出九宫,实际上是被休眠了。保活手段有三。一、系统设置>>应用启动管理,勾选允许后台启动。二、申请电池优化白名单(inent启
首先明确一个问题——保的什么活?活就是活性,主要有两点:一、APP的虚拟机进程不被杀死。二、可以执行代码。
需求就是就么简单。一个是进程活性,另一个是代码活性。失去进程活性,APP名存实亡,只存在一点点内存缓存,比直接划掉好一点点。失去代码活性,APP丢失权柄,令不出九宫,实际上是被休眠了。
保活手段有三。一、系统设置>>应用启动管理,勾选允许后台启动。二、申请电池优化白名单(inent启动Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
)。三service+通知+循环播放无声音频。
华为不可忽略的是手机是否开启省电模式。如果没有开启,那么或许前两个手段就能达成目的。如果开启了,那么需要播放无声音频,但是手机音量不能为零。否则系统一样拉你的APP进入休眠,再次亮屏才恢复。
附空白音频仓库(没用的):https://github.com/anars/blank-audio
在线音频编辑器,可以强行无声化处理:https://twistedwave.com/online
挺简单一个功能,怎么就这么难呢?祝愿天底下的shabi阿三渐渐死绝,愿世界越来越美好。
MediaPlayer mMediaPlayer=MediaPlayer.create(this, R.raw.toomuch);
mMediaPlayer.setOnCompletionListener(MediaPlayer::start);
Equalizer eq = new Equalizer(0, mMediaPlayer.getAudioSessionId());
for (int i = 0; i < eq.getNumberOfBands(); i++) {
eq.setBandLevel((short)i, (short)1);
}
mMediaPlayer.setVolume(0.1f, 0.1f);
mMediaPlayer.start();
太多的借口 太多的理由……
还有wifi保活,不设此,熄屏后半小时左右就会关闭无线网络:
WifiManager wm = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL , "MyWifiLock");
if(!wifiLock.isHeld()){
wifiLock.acquire();
}
更多推荐
所有评论(0)