Android Studio的代码笔记--IntentService学习

IntentService学习

IntentService

一个 HandlerThread工作线程,通过Handler实现把消息加入消息队列中等待执行,通过传递的intent在onHandleIntent中处理任务。(多次调用会按顺序执行事件,服务停止清除消息队列中的消息。)

适用:线程任务按顺序在后台执行,例如下载

不适用:多个数据同时请求

1、IntentService与Service的区别

从属性作用上来说

Service:依赖于应用程序的主线程(不是独立的进程 or 线程)。需要主动调用stopSelft()来结束服务

不建议在Service中编写耗时的逻辑和操作,否则会引起ANR;

IntentService:创建一个工作线程来处理多线程任务。在所有intent被处理完后,系统会自动关闭服务

2、IntentService与其他线程的区别

IntentService内部采用了HandlerThread实现,作用类似于后台线程;

与后台线程相比,IntentService是一种后台服务,优势是:优先级高(不容易被系统杀死),从而保证任务的执行。

对于后台线程,若进程中没有活动的四大组件,则该线程的优先级非常低,容易被系统杀死,无法保证任务的执行

常规用法

清单注册服务

java 复制代码
<service android:name=".SerialService">
            <intent-filter>
                <action android:name="android.service.newland.serial" />
            </intent-filter>
        </service>

服务内容

java 复制代码
package com.lxh.serialport;
import android.app.IntentService;
import android.content.Intent;
import android.content.Context;
public class SerialService extends IntentService {
    private static final String TAG = "SerialService lxh";
    private static String ACTION_Serial = "android.service.serial";

    public SerialService() {
        super("SerialService");
    }

    public static void startSS(Context context) {
        Intent intent = new Intent(context, SerialService.class);
        intent.setAction(ACTION_Serial);
        context.startService(intent);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        if (intent != null) {
            final String action = intent.getAction();
            if (action.equals(ACTION_Serial)) {
//                mSerialInter = new modeSerialInter();
//                SerialManage.getInstance().init(mSerialInter);
//                SerialManage.getInstance().open();
            }
        }
    }
}

开启服务

java 复制代码
SerialService.startSS(this);

感谢互联网

适合阅读文章分享
Android IntentService详解

与君共勉!待续

欢迎指错,一起学习

相关推荐
夕除几秒前
js--15
java·jvm·spring
曾经的三心草5 分钟前
redis-9-集群
java·redis·mybatis
兴趣使然HX8 分钟前
Android绘帧流程解析
android
sun032211 分钟前
【架构基础】Spring中的PropertySourcesPlaceholderConfigurer介绍 (并非新知识,比较古老的一种使用方式)
java·spring·架构
学编程的闹钟12 分钟前
95【给图片添加跳转链接】
学习
chilavert31813 分钟前
技术演进中的开发沉思-356:重排序(中)
java·开发语言
毕设源码-邱学长13 分钟前
【开题答辩全过程】以 基于SSM的儿童福利院管理系统为例,包含答辩的问题和答案
java·eclipse
听麟19 分钟前
HarmonyOS 6.0+ PC端虚拟仿真训练系统开发实战:3D引擎集成与交互联动落地
笔记·深度学习·3d·华为·交互·harmonyos
TT哇20 分钟前
【实习】数字营销系统 银行经理端(interact_bank)前端 Vue 移动端页面的 UI 重构与优化
java·前端·vue.js·ui
Elieal29 分钟前
SpringBoot 数据层开发与企业信息管理系统实战
java·spring boot·后端