使用IntentService与BroadcastReceiver实现后台服务(Android7.0可用)

IntentService的优点

IntentService会创建单独的线程处理所有的Intent请求,
会处理onHandleIntent方法实现的代码,
隐藏开发者无须处理多线程问题,
当所有请求处理完成后,IntentService会自动停止

Action的使用

Action其实就是一个字符串,可以起到一个标识的作用

BroadcastReceiver的使用

BroadcastReceiver本质是一个监听器,有自己的进程
重写onReceive方法即可,但是在该方法里面不要执行耗时的操作,否则会ANR
发送
    创建Intent
    设置Action
    putExtra
    send发送
接收
    实现onReceive方法
在AndroidManifest内增加配置
BroadcastReceiver
其他
    开机自动运行的Service

第一步

动态注册广播
broadcastReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.space.text2.action.MSGTEXT");
//这个Action的作用是当发送为该Action的广播时,
该MyReceiver类的onReceive方法将会接收到并处理
    registerReceiver(broadcastReceiver,intentFilter);

第二步

在Activity中添加一个UI组件,比如按钮
为按钮添加监听器
在该监听器内启动IntentService

Intent  intent = new Intent(FinsihActivity.this,TextIntentService.class);   
            intent.setAction("com.example.space.text2.action.MSGFINSIH");
//设置该Action以便IntentService接收到Intent,
判断是哪个Action,如果是这个Action话,就进行相应处理
intent.putExtra("finish","这是finishactivity发送的消息");
FinsihActivity.this.startService(intent);

第三步

添加一个IntentService.java类,可以使用Android Studio的自动生成
注释掉没有用的代码
但是一定要保留protected void onHandleIntent(Intent intent) 和
    public TextIntentService() {
        super("TextIntentService");
    }
方法
在protected void onHandleIntent(Intent intent) 方法中进行后台任务的处理即可

    protected void onHandleIntent(Intent intent) {
        if (intent != null) {
            final String action = intent.getAction();
            if (ACTION_MSGFINSIH.equals(action)) {
                String param1 = intent.getStringE
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值