Andrio studio 学习 之 后台操作及IntentService

Android IntentService详解(源码分析) 1. 前言 1.1 定义 2.使用方法 3.源码分析 阅读详情

后台操作及IntentService

IntentService介绍

IntentService 是service的子类, 已经现实了.onbind的方法.我们只要重写其中的 onHandleIntent即可.

IntentService 是继承自 Service 并处理异步请求的一个类,在 IntentService
内有一个工作线程来处理耗时操作。
当任务执行完后,IntentService 会自动停止,不需要我们去手动结束。
如果启动 IntentService 多次,那么每一个耗时操作会以工作队列的方式在 IntentService 的
onHandleIntent 回调方法中执行,依次去执行,使用串行的方式,执行完自动结束。

使用IntentService网络请求json串,将json串使用广播发送给activity界面

思路:创建服务,注册服务 ,

(1)创建服务:MyIntentService.java

public class MyIntentService extends IntentService {
    //TODO  注意:必须提供无参数构造,不然清单文件中注册报错
    public MyIntentService(){
        super("MyIntentService");
    }

    public MyIntentService(String name) {
        super(name);
    }
    //TODO  将所有耗时操作都在该方法中完成,相当于开启线程
    @Override
    protected void onHandleIntent(@Nullable Intent intent) {
        StringBuffer sb=new StringBuffer();
        HttpURLConnection connection=null;
        InputStream inputStream=null;
        try {
            URL url=new URL("http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1");
            connection = (HttpURLConnection) url.openConnection();
            connection.setReadTimeout(5*1000);
            connection.setConnectTimeout(5*1000);

            if(connection.getResponseCode()==200){
                inputStream  = connection.getInputStream();
                byte[] b=new byte[1024];
                int len=0;
                while((len=inputStream.read(b))!=-1){
                    sb.append(new String(b,0,len));
                }
                //TODO 向Activity或Fragment发送json串
                Intent intent1=new Intent();
                intent1.setAction("com.bawei.intentservice");
                Bundle bundle = new Bundle();
                bundle.putString("json",sb.toString());
                intent1.putExtras(bundle);
                sendBroadcast(intent1);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(inputStream!=null){
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(connection!=null){
                connection.disconnect();
            }
        }
    }
}

(2)清单文件注册服务

 <service android:name=".Intentservice.MyIntentService" />

(3)Activity代码

public class MainActivity extends AppCompatActivity {
    private  MyReceiver myReceiver;
    private Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //注册广播
        IntentFilter intentFilter=new IntentFilter();
        intentFilter.addAction("com.bawei.intentservice");
        myReceiver=new MyReceiver();
        registerReceiver(myReceiver,intentFilter);
        //开启服务
        intent=new Intent(this,MyIntentService.class);
        startService(intent);


    }
    //解除广播+关闭服务
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(myReceiver);
        stopService(intent);
    }

    class MyReceiver extends BroadcastReceiver{
        @Override
        public void onReceive(Context context, Intent intent) {
            String action=intent.getAction();
            if("com.bawei.intentservice".equals(action)){
                Bundle bundle = intent.getExtras();
                String json = bundle.getString("json", "");
                //接续json串 展现在ListView 中
                Toast.makeText(context, ""+json, Toast.LENGTH_SHORT).show();

            }
        }
    }
}
Android Intent Service BroadCast AndroidStudio 本项目将Android中的Intent总结了一遍。主要有四个项目,Intent_Intent项目是简单的Intent跳转(setActivityResult);Intent_broadcast主要是静态广播的注册;Intent_broadcastdynamic主要介绍动态广播的注册;intent_service主要是启动服务来播放音乐(我今年正好十八岁-阿正)。 本项目使用Android Studio 1.4 编写。 立即下载

相关推荐

深入剖析Android系统中Service和IntentService的区别

主要介绍了Android系统中Service和IntentService的区别,与普通的服务相比,IntentService可以开启单独的线程来处理intent请求,需要的朋友可以参考下

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

intentservice本质是一个 HandlerThread工作线程,通过Handler实现把消息加入消息队列中等待执行,通过传递的intent在onHandleIntent中处理任务。

weixin_45208598的博客 736

Android Qcom USB Driver学习(五)

在前面的第二期中,我们知道一些非标的USB的充电类型Floatingcharger,其具有和普通DCP相似的大电流能力,但在最初检测的时候会限制Inputcurrentlimit到100mA,来进行检测是否是SDP类型,所以要支持大电流输入就需要进行vote操作,前面的几篇都有涉及,所以本文学习一下pmicusbcharger都相关的vote机制。...

Android驱动开发 2901

用Android-Studio的IntentService模板快速实现业务需求(实战)

一、用Android-Studio开发工具,新建一个IntentService。 二、勾选“开始方法助手”,其实就是IntentService的模板写法。 三、详细看下模板内容。 package com.czz.manager.service; import android.app.IntentService; import android.content.Intent; i

poeticHadoop的博客 2208

Intel RealSense D435深度相机实战:从数据采集到点云生成的完整避坑指南

本文详细介绍了Intel RealSense D435深度相机的实战应用,从数据采集到点云生成的完整流程,并提供了避坑指南。内容包括环境配置、硬件调优、数据采集技巧、点云生成核心技术及典型场景解决方案,帮助开发者高效利用D435进行机器人导航、三维重建等应用。

weixin_29054195的博客 472

TB6600驱动器共阴共阳接法傻傻分不清?一张图搞定STM32与42步进电机的接线避坑指南

本文详细解析了TB6600驱动器共阴共阳接法的本质区别,提供了STM32与42步进电机的高效连接方案。通过实际案例和接线图示,帮助读者避免常见错误,确保驱动器与MCU的安全连接,提升项目稳定性。

weixin_28710999的博客 244

服务Service与IntentService

是能够在后台长时间执行操作并且不是供用户界面的应用程序组件。Senice可以与其他组件进行交互,一般由Activity启动,但是并不依赖于Activity。Service通常被称为“后台服务”,其中“后台”一词是相对于前台而言的,。除此之外,Service还具有较长时间运行特性,它的应用场景主要有两个,分别是后台运行和跨进程访问。1.后台运行:Senvice可以在后台长时间进行操作而不用提供界面信息,只有当系统必须要回收内存资源时,才会被毁,否则Service会一直在后台运行。

m0_57150356的博客 886

达梦数据库与sharding-jdbc的深度适配实践

本文详细介绍了达梦数据库与sharding-jdbc的深度适配实践,包括驱动与依赖管理、核心适配实现、注册与配置等关键步骤。通过扩展shardingSphere的方式,成功实现了达梦数据库的分库分表功能,并提供了常见问题解决方案和性能优化建议,助力企业级应用高效处理海量数据。

weixin_30300225的博客 623

Android中的IntentService以及它的实现原理

Android中的IntentService以及它的实现原理

QYgujingjing的专栏 382

用友U8登录慢卡顿?别急着重启服务器,先检查UA_Message这张表(附SQL清理脚本)

本文针对用友U8登录慢卡顿问题,深入分析UA_Message表积压消息对系统性能的影响,并提供SQL清理脚本和优化方案。通过诊断、清理、索引优化和预防措施四步法,显著提升U8客户端登录速度,适用于后台管理和数据库维护场景。

weixin_28726671的博客 380

keil+Jlink GD32调试记录

Jlink+keil,GD32调试记录,踩坑及解决,持续更新。

SUN_BW的博客 2952

关于Android线程和线程池的那些事

目前常用的线程有: 注意事项 AsyncTask 必须在主线程创建 必须在主线程执行,也就是调用excute(); 不要手动调用doInBackground,onPreExecute,onPostExecute,onProgressUpdate 每个AsyncTask对象仅能执行一次 AsyncTask在android3.0 以上是串行执行,在android 3.0以下是并行执行。表现状态为用同一个AsyncTask类创建多个AsyncTask对象,并同时调用excute。andro

cqn2bd2b的博客 405

告别第三方插件:官方Fused Library如何重塑Android库的合并与发布流程

本文详细介绍了Android官方推出的Fused Library如何替代第三方fat-aar插件,优化Android库的合并与发布流程。通过原生支持、智能依赖管理等优势,Fused Library解决了版本兼容性、依赖传递等核心痛点,提供了更稳定高效的开发体验。文章还提供了迁移实操指南和工程实践建议,帮助开发者顺利过渡到官方方案。

weixin_42561040的博客 253

Android——intentservice介绍

缺点明显: 使用handler进行异步处理时,容易产生内存泄漏问题。固然可以通过将handler设置为静态内部类,解决这个问题,但是将handler设置为静态内部类后就无法引用内部成员变量。 内存泄漏原因: Activity要销毁时,消息队列里消息没处理完,Message Queue默认引用handler,handler默认引用activity。 第二种:使用IntentService(异步任务处理服务) 优点:可以在后台执行,不受Activity生命周期影响。(只能通过startActivi

qq_47112287的博客 4645

UE5、CesiumForUnreal实现加载GeoJson绘制多面(MultiPolygon)功能(支持点选高亮)

UE5、CesiumForUnreal实现加载GeoJson实现多面(MultiPolygon)的绘制功能,并且支持点选高亮和属性查询。

专注GIS开发 4628

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android中IntentService详解

简单说,IntentService是继承于Service并处理异步请求的一个类,在IntentService内有一个工作线程来处理耗时操作,启动IntentService的方式和启动传统Service一样,同时,当任务执行完后,IntentService会自动停止,而不需要我们去手动控制。另外,可以启动IntentService多次,而每一个耗时操作会以工作队列的方式在IntentService的

IT_51888_liang的博客 744

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android studio IntentService

1.代码: xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schema

sunweihao2019的博客 450

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

安卓开发学习18-3:Service应用:Intent Service

为什么使用Intent Service使用创建基本使用 为什么使用Intent Service 对于普通的Service,处理耗时任务,需要手动创建线程进行处理,不然阻塞主线程,会弹出程序长时间无响应的提示,用户体验不好 如果使用Service处理,就需要手动创建线程进行异步处理任务,并且还要手动停止服务,显然不方便,Intent Service就是用来处理这种情况,更为简便 使用 Intent Service的启动方式是差不多的 创建 以下是通过Android Studio进行创建,这种方式会自动在.

qq_43967413的博客 710

安卓开发--环境配置

安卓开发--环境配置

LQ_001的博客 1390

Android之IntentService的使用

通过前面的学习,大家会发现我们在使用 Service 时总会创建一个线程来执行任务,而不是直接在 Service中执行。这是因为 Service 中的程序仍然运行于主线程中,当执行一项耗时操作时,不新建一个线程的话很容易导致 Application Not Responding 错误。当需要与 UI线程进行交互时,使用 Handler 机制来进行处理。 为了简化操作,Android提供了IntentService类。IntentService是 Android中提供的后台服务类,是Service 自动实现

PPYY3344的博客 2355

关于 andrio studio如何用PC端连接安卓机器后用远程终端调试

在这儿进入安卓终端界面,用andrio studio的adb 命令,如果这个命令不行,说明没有配置好这个环境变量,或者可以用第二种方法。这个里面就可以了,然后使用CMD 进入windows 命令行界面。输入adb shell命令,进入安卓远程终端模式。讲下载的andrio SDK里面的文件夹里面的这三个复制到。问题是使用安卓机器串口失败,是因为权限问题,我这儿只是简单记录一下,问题如下。

2301_77290434的博客 535

彻底卸载Android Studio,防止跳过向导步骤

彻底卸载Android Studio,防止跳过向导步骤,安装过一次Android又卸载了之后,不处理干净文件夹就会导致再次安装时跳过向导步骤

yujinjinui的博客 2989

Andrio studio学习 之 BroadCastReceiver运用

BroadCastReceiver运用 全局广播: 发送的广播事件可被其他应用程序获取,也能响应其他应用程序发送的广播事件(可以通过 exported–是否监听其他应用程序发送的广播 在清单文件中控制) 全局广播既可以动态注册,也可以静态注册。 默认发送的广播,就是全局广播,所有的App都可以请求接受 本地广播 发送的广播事件不被其他应用程序获取,也不能响应其他应用程序发送的广播事件。 本地...

Young_cloud的博客 385

Andrio studio 学习 之 BroadCastReceiver

BroadCast 广播 广播作用以及机制 其实BroadcastReceiver就是应用程序间的全局大喇叭,即通信的一个手段, 系统自己在很多时候都会发送广播,比如电量低或者充足,刚启动完,插入耳机,输入法改变等, 发生这些时间,系统都会发送广播,这个叫系统广播,每个APP都会收到,如果你想让你的应用在接收到 这个广播的时候做一些操作,比如:系统开机后,偷偷后台跑服务哈哈,这个时候你只需要为你...

Young_cloud的博客 468

android 服务被挂起,Android Service详解(三)---IntentService

这是第三篇文章主要讲的是IntentService的使用一、Service的耗时操作如何解决呢?不管是何种Service,它默认都是在应用程序的主线程(亦即UI线程)中运行的。所以,如果你的Service将要运行非常耗时或者可能被阻塞的操作时,你的应用程序将会被挂起,甚至会出现ANR错误。为了避免这一问题,你应该在Service中重新启动一个新的线程来进行这些操作。现有两种方法大家参考:① 直接在...

weixin_39932611的博客 834

Android IntentService的使用

今天在集成个推的推送服务的时候,看到个推在接受推送的消息的处理的时候,用的是服务,这个和之前的不一样,,老的个推接受消息用的是广播,根据个推的文档说: 从2.9.5.0版本开始,为了解决小概率发生的Android广播丢失问题,我们推荐应用开发者使用新的IntentService方式来接收推送服务事件(包括CID获取通知、透传消息通知等) 在此之前只是听说过IntentService,...

androidzmm的博客 1154
上一篇: Andrio studio 学习 之 Service生命周期和启动方式
下一篇: Andrio studio 学习 之 Service进程间通信
Young_cloud
博客等级 码龄7年 18粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值