JobService是android后来提供的一个服务,意在处理一些后台任务,且可以设置一些在启动后多长时间范围内随机开始执行任务等的参数。
但在某些手机JobService无法启动,例如小米9,说一下发现这个问题的过程。
在使用github上开源的一个
异常捕获ACRA
框架时,发现在app崩溃后华为设备可以将错误日志上传至服务器,小米9不可以,而这个框架就是利用JobService来上传错误日志。
对于这种情况在设置中打开应用的自启动就可以。
JobService示例:
public class JobSenderService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
new Thread(() -> {
jobFinished(params, false);
}).start();
return true;
@Override
public boolean onStopJob(JobParameters params) {
return false;
启动示例:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
JobScheduler scheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
assert scheduler != null;
JobInfo.Builder builder = new JobInfo.Builder(0, new ComponentName(this, JobSenderService.class));
builder.setOverrideDeadline(0L);
scheduler.schedule(builder.build());
JobService是android后来提供的一个服务,意在处理一些后台任务,且可以设置一些在启动后多长时间范围内随机开始执行任务等的参数。但在某些手机JobService无法启动,例如小米9,说一下发现这个问题的过程。在使用github上开源的一个异常捕获ACRA框架时,发现在app崩溃后华为设备可以将错误日志上传至服务器,小米9不可以,而这个框架就是利用JobService来上传错误日志。对于这种情况在设置中打开应用的自启动就可以。JobService示例:public class Jo
// 构建JobInfo对象,传递给JobSchedulerService
JobInfo.Builder builder = new JobInfo.Builder(JOB_ID,new ComponentName(mContext, AliveJobService.class));
builder.setPeriodic(5000);
JobSchedulerService启动过程,最主要工作是从jobs.xml文件收集所有的jobs,放入到JobStore的成员变量mJobSet,转成jobinfo。
JobScheduler服务启动
2.1 startOtherServices
[-> SystemServer.java]
privatevoidstartOtherServices()...
在模拟器上面所有版本的Android系统在进程被杀死后都可以接受到开锁屏广播。
真正的手机上面,小于等于5.0的手机在进程被杀死后可以接受到开锁屏广播。大于5.0在进程被杀死后就不能接受开锁屏广播了。
二,使用JobService保活。
JobService在5.0 5.1和6.0的手机可以起到服务拉活的作用。之后的版本就不能起效果了。包括模拟器测试效果一样。对于7.0 7.1和8.0 8.1的手机实现服务保活目前就没有办法了。qq和微信和手机生产厂商有合作所有能被拉活,在设置为允许自启的情况下。
1 手机内存不足,系统需要花费更多资源去运行优先级较高的应用
2 第三方的管理软件比如360,腾讯管家,清理进程也可能会杀死进程
Android系统会优先杀死进程优先级较低的应用,如果应用的优先级相同,那么系统会优先杀死占用内存较多的应用。
所以要使得我们的应用长时间保活,正常的做法是提高优先级以及优化内存使用,不要出现内存泄漏等现象。
Android进程优先级:
以下内容拷贝自Android 官网
https://developer.android.
TL; DR
$ curl -LO https://raw.githubusercontent.com/bitnami/bitnami-docker-harbor-portal/master/docker-compose.yml
$ curl -L https://github.com/bitnami/bitnami-docker-harbor-portal/archive/master.tar.gz | tar xz --strip=1 --wildcards ' *-master/config '
$ docker-compose up
请注意,我们正在从Harbor Portal组件存储库下载docker
JobService简介:
JobService是
Android L版本加入的组件,
JobService是继承自S
ervice的抽象类,为S
ervice的加强和优化.
由系统统一管理和调度,在特定场景下(网络状态等等)使用
JobService更加灵活和省心。
可以在应用退出后,重新
启动应用后,系统将PersistableBundle数据回调到
JobService对原来的事务进行处理。
List of apks:
[0] 'D:\Android Project\kotlin-compose-mobile-application\app\build\intermediates\apk\debug\app-debug.apk'
Installation failed due to: ''cmd package install-create -r -t --user current --full --dont-kill --skip-verification -S 6471930' returns error 'Unknown failure: cmd: Can't find service: package''
记录android遇到的SecurityException
Minla: