当前位置: 首页 > news >正文

网站怎样才有流量湘潭网站建设口碑好磐石网络

网站怎样才有流量,湘潭网站建设口碑好磐石网络,广东建设执业资格注册中心网站,南京制作网页设计1.介绍IntentService IntentService是Android中的一个Service类,用于在后台执行耗时操作,而不会阻塞UI线程。它封装了HandlerThread和Handler,使得我们可以方便地在后台执行任务,而不需要自己管理线程和消息处理。 以下是 Intent…

1.介绍IntentService


       IntentService是Android中的一个Service类,用于在后台执行耗时操作,而不会阻塞UI线程。它封装了HandlerThread和Handler,使得我们可以方便地在后台执行任务,而不需要自己管理线程和消息处理。

以下是 IntentService 的主要特点和用法:

  1. 自动停止:当所有的请求都被处理完毕后,IntentService 会自动停止,无需手动调用 stopSelf() 方法。

  2. 工作线程:IntentService 会在后台创建一个工作线程来处理请求,因此可以安全地执行长时间运行的任务,而不会阻塞主线程。

  3. 队列处理:IntentService 会按照请求的顺序逐个处理,确保每个请求都能得到处理,不会出现并发问题。

  4. 默认实现:IntentService 已经实现了 onStartCommand() 方法和 Handler,因此开发者只需要实现 onHandleIntent() 方法来处理请求逻辑即可。

2.IntentService源码


总结:

  1. 在onCreate方法中,IntentService创建了一个HandlerThread和Handler对象,并启动HandlerThread,用于执行后台任务。

  2. 在onStartCommand方法中,IntentService会调用onStart方法,并将传入的Intent传递给onStart方法。

  3. 在onStart方法中,会通过Handler对象发送消息,调用onHandleIntent方法来处理传入的Intent,这是一个抽象方法,需要我们自己来实现具体的后台任务逻辑。

  4. 在onDestroy方法中,IntentService会停止HandlerThread,并释放资源。

下面是详细的源码解析:

IntentService类封装了HandlerThread和Handler。

public void onCreate() {
​super.onCreate();HandlerThread thread = new HandlerThread("IntentService[" + mName + "]");thread.start();
​mServiceLooper = thread.getLooper();mServiceHandler = new ServiceHandler(mServiceLooper);
}

当IntentService被第一次启动时,它的onCreate方法会被调用,onCreate方法被创建一个HandlerThread,然后使用它的Looper来创建一个Handler对象mServiceHandler,mServiceHandler发送的消息最终都会在HandlerThread中执行,从这个角度来看,IntentService也可以用于执行后台任务。每次启动IntentService,它的onStartCommand方法就会调用一次,IntentService在onStartCommand中处理每个后台任务的Intent。下面看法就会调用一次,IntentService在onStartCommand中处理每个后台任务的Intent。下面看一下inStartCommand方法是如何处理外界的Intent的,onStartCommand调用了onStart的实现如下:

public void onStart(@Nullable Intent intent, int startId) {Message msg = mServiceHandler.obtainMessage();msg.arg1 = startId;msg.obj = intent;mServiceHandler.sendMessage(msg);
}

IntentService类中的onDestroy方法如下:

    @Overridepublic void onDestroy() {mServiceLooper.quit();}

在这段代码中,mServiceLooper是一个HandlerThread的实例,quit()方法用于停止HandlerThread的消息循环并释放相关资源。这是为了确保在Service销毁时,后台线程也能够被正确地停止和清理,以避免内存泄漏和资源浪费。 

3.IntentService的简单使用


使用步骤:

步骤1: 定义 Intentservice 的子类,需复写 onHandleIntent() 方法

步骤2:在 Manifest.xml中注册服务

步骤3: 在 Activity 中开启 Service 服务

public class MyIntentService extends IntentService {public MyIntentService() {super("MyIntentService");}@Overrideprotected void onHandleIntent(Intent intent) {String action=intent.getStringExtra("task_action");Log.d("xxx","receive task :"+action);SystemClock.sleep(300);if ("com.example.intentservice_java".equals(action)) {Log.d("xxx","handle task:"+action);}}@Overridepublic void onDestroy() {Log.d("xxx","service onDestroy");super.onDestroy();}
}

发起三个后台任务请求:

Intent service =new Intent(this,MyIntentService.class);
service.putExtra("task_action","com.example.intentservice_java1");
startService(service);
service.putExtra("task_action","com.example.intentservice_java2");
startService(service);
service.putExtra("task_action","com.example.intentservice_java3");
startService(service);

http://www.yayakq.cn/news/526810/

相关文章:

  • 网站建设站点无法发布网站建设期末总结
  • win 2012 iis 默认网站google chrome官网
  • 如何将自己做的网站挂到服务器上域名怎么做网站
  • 国内外ai设计素材网站大河网
  • 查大学专业网站合肥那个公司做网站优化好
  • 做云盘网站哪个好服装设计工作室
  • 创办免费企业网站北京网站制作出名 乐云践新
  • 龙岗企业网站建设wordpress订单提醒功能
  • 南京外贸网站建设系统深圳投资推广署
  • 学院网站建设项目的成本计划书刘涛做的婴儿玩具网站
  • 会议平台网站建设响应式网站 翻译代码
  • 接入商 济南网站建设做网站包括服务器么
  • chrome打开建设银行网站 个人网上银行怎么不能查询明细网站开发建设合同
  • 雷州网站开发公司西宁网络推广服务网
  • 安化网站建设python能否做网站
  • 营销型网站建设设计6办公室装修设计效果图大全
  • 协会网站建设目的北京公司网站
  • 云南网站建设维修公司哪个网站做外贸零售比较好呢
  • 直接通过ip访问网站主要网站 开发语言
  • 海尔网站建设策划书贵州省城乡建设厅网站材料价
  • 张家界优秀网站建设建设银行信用卡网站是多少钱
  • 营销网站做得好的公司自己做网站传视屏
  • 安徽工程信息网官网首页优质的seo网站排名优化软件
  • 外贸型网站推广与监测pc端软件界面设计
  • 如何运用链接推广网站网站 数据报表如何做
  • 东莞志豪建设公司网站阿里巴巴网站装修
  • 怎么把网站放到服务器上大连网络推广机构
  • 淘宝网站建设基本流程苏州网站建设公司电话
  • 网站建设大概需要多少费用wordpress ios使用
  • 触屏版网站模板asp网站开发视频