android IntentService 简要的说明

原创 2016年08月29日 14:17:44


最近仔细的看了看IntentService 和Service的区别,这里主要说一下IntentService 。

1.Service 不用多说 大家都经常用的 但是IntentService可能不是经常用到,但是在特定的情况下IntentService用起来要比Service方便不少。

1.1例如,我们的程序里边有俩个耗时的操作,第一个耗时操作命名为first ,第二个耗时操作命名为second,执行逻辑是first执行完毕以后second才能执行,这个时候用IntentService就特别方便了。可能只这样说大家不太明白,上代码加解释大家就会很容易看懂。


package com.example.zxy.android60test.service;

import android.app.IntentService;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

/**
 * Created by ZhangXueYang on 2016-8-29.
 * IntentService  1.启动以后 完成执行的任务 服务自动关闭,2.多任务的时候 会形成任务队列 会按顺序逐个去执行
 */
public class ServiceIntentDemo extends IntentService {


    /**
     * 必须实现方法的重构 而且不能有参数 否则Manifest 注册时会找不到该类
     */
    public ServiceIntentDemo() {
        super("test");
        Log.e("181", "test");
    }

    @Override
    protected void onHandleIntent(Intent intent) {//IntentSerivce核心回调方法 主要的代码逻辑都在这里
    
        //Intent是从Activity发过来的,携带识别参数,根据参数不同执行不同的任务
        
        String msg = intent.getStringExtra("msg");
        if (msg.equals("first")) {
            Log.e("181", "执行第 一 个任务");
        } else if (msg.equals("second")) {
            Log.e("181", "执行第 二 个任务");
        }

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


    }

    @Override
    public void onStart(Intent intent, int startId) {
       Log.e("181", "启动服务1");
        super.onStart(intent, startId);

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e("181", "启动服务2");
        return super.onStartCommand(intent, flags, startId);

    }


    @Override
    public void onCreate() {
        super.onCreate();
        Log.e("181", "创建服务");
    }

    @Override
    public IBinder onBind(Intent intent) {
        return super.onBind(intent);
    }

    @Override
    public void onDestroy() {//当所有线程执行完毕,IntentService会自动关闭,不用我们子调取一次销毁方法,是不是很方便啊!
        Log.e("181", "销毁服务");
        super.onDestroy();
    }
}
package com.example.zxy.android60test;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;



/**
 * Created by ZhangXueYang on 2016-8-11.
 */
public class AAAA extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //可以启动多次,每启动一次,就会新建一个work thread,但IntentService的实例始终只有一个
        //启动第一个耗时服务
        Intent intentf = new Intent("com.test.intentservice");
        intentf.putExtra("msg", "first");
        startService(intentf);
        //启动第二个耗时服务
        Intent intents = new Intent("com.test.intentservice");
        intents.putExtra("msg", "second");
        startService(intents);
    }
}最后别忘了在Manifest注册IntentionService

下面是运行截图,由截图可以看出虽然我们调用了俩次startService 但是IntentService 只创建了一个实例,而且执行完毕work队列以后自动销毁了IntentService.



Android开发--IntentService的用法,你错过了什么

IntentService是Android中提供的后台服务类,我们在外部组件中通过Intent向IntentService发送请求命令,之后IntentService逐个执行命令队列里的命令,接收到首...
  • smbroe
  • smbroe
  • 2015年04月12日 14:12
  • 4242

Service生命周期和启动方法以及IntentService

通过StartService启动Service,当访问者退出时,Service仍然能运行,访问者与Service之间没有关联。而bindService,访问者与服务绑定,访问者一旦退出,服务也终止。 ...
  • rabbit_in_android
  • rabbit_in_android
  • 2015年11月16日 09:20
  • 4321

Android 多线程之IntentService 完全详解

转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52334098 出自【zejian的博客】 关联文章: A...
  • javazejian
  • javazejian
  • 2016年09月04日 07:58
  • 7995

Android界面布局的简单介绍

关于五大布局的使用方法(仅供参考) 有些小伙伴可能之前已经学过swing这种轻量级的界面布局,android里面也有和swing界面布局的方式,但是学过的人应该有这种烦恼,布局好麻烦,不仅仅是一开始布...
  • u012921396
  • u012921396
  • 2015年01月28日 21:13
  • 652

android中Service的基本用法和IntentService的使用

至于Service是什么此,相信大家都有一定的了解,篇也不多做概述了。 此篇主要是讲一下Service的基本用法和IntentService的使用。 首先是说一下Service中主...
  • Double2hao
  • Double2hao
  • 2015年11月06日 10:11
  • 2801

IntentService使用详解和实例介绍

IntentService的定义、原理和内部调用过程,实例说明。
  • Amazing7
  • Amazing7
  • 2016年05月13日 13:56
  • 9605

Android开发之Service与IntentService的区别与使用场景

转载自:点击打开链接 Service Service 是长期运行在后台的应用程序组件。 Service 不是一个单独的进程,它和应用程序在同一个进程中,Service 也不是一个线程...
  • lyj1005353553
  • lyj1005353553
  • 2016年12月14日 21:50
  • 2032

IntentService,用完即走

IntentService     IntentService,可以看做是Service和HandlerThread的结合体,在完成了使命之后会自动停止,适合需要在工作线程处理UI无关任务的场景。...
  • iromkoear
  • iromkoear
  • 2017年03月18日 12:36
  • 588

Android中IntentService的使用及其源码解析

为什么我们需要IntentService ?Android中的IntentService是继承自Service类的,在我们讨论IntentService之前,我们先想一下Service的特点: Ser...
  • sunqunsunqun
  • sunqunsunqun
  • 2015年08月28日 08:41
  • 3134

IntentService的实际应用场景

IntentService相比父类Service而言,最大特点是其回调函数onHandleIntent中可以直接进行耗时操作,不必再开线程。其原理是IntentService的成员变量 Handler...
  • zhengyin_tmac
  • zhengyin_tmac
  • 2016年09月06日 09:12
  • 1092
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android IntentService 简要的说明
举报原因:
原因补充:

(最多只允许输入30个字)