JobIntentService的使用

Android 91es.com站长2024年4月22日 pm6:56发布1个月前更新
0
导航号,我的单页导航
目录

前言

简单记录一下JobIntentService的使用,后面高版本又废弃了,推荐使用Android Jetpack了。

虽然废弃了,但还是记录一下(之前没记录)。

水文一篇,哈哈,大佬们可以跳过。

正文

Android 8.0对系统资源的管控更加严格,添加了后台限制规则。

如果满足以下任意条件,应用将被视为处于前台:

  1. 具有可见 Activity(不管该 Activity 已启动还是已暂停)。

  2. 具有前台服务。

  3. 另一个前台应用已关联到该应用(不管是通过绑定到其中一个服务,还是通过使用其中一个内容提供程序)。 例如,如果另一个应用绑定到该应用的服务,那么该应用处于前台。

  4. IME

  5. 壁纸服务

  6. 通知侦听器

  7. 语音或文本服务

如果以上条件均不满足,应用将被视为处于后台。

系统不允许后台应用创建后台服务。 因此,Android 8.0 引入了一种全新的方法,即 Context.startForegroundService(),以在前台启动新服务。

在系统创建服务后应用有五秒的时间来调用该服务的 startForeground() 方法以显示新服务的用户可见通知。

如果应用在此时间限制内未调用 startForeground(),则系统将停止服务并声明此应用为 ANR。

XJobService.java

public class XJobService extends JobIntentService {

    private static final String TAG = "XJobService_";
    private static final int JOB_ID = -300;


    @Override
    protected void onHandleWork(@NonNull Intent intent) {
          //这里处理intent
    }

    public static void enqueueWork(Context context, Intent intent) {
        enqueueWork(context, XJobService.class, JOB_ID, intent);
    }
}

AndroidManifest.xml

<service
     android:name=".XJobService"
     android:exported="true"
     android:permission="android.permission.BIND_JOB_SERVICE" />

调用方式

XJobService.enqueueWork(this,  new Intent(new ComponentName(this, XJobService.class)));

参考文章

  1. JobIntentService详解及使用

版权声明 1、 本站名称 91易搜
2、 本站网址 https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权请留言
4、 本站禁止发布或转载任何违法的相关信息,如有发现请向站长举报
导航号,我的单页导航

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...