说实话,对于这个类在我实际工作中并没有用到过,通常也只是用了它的父类Service,通过官方文档可以看出类的层次结构:
而在今年的一次面试当中,有个面试官提起了它,所以虽说目前还没有真实在项目中用它,但是有必要先了解一下它的用法,在大脑中有一定的印象,以便将来真正能用到时则直接参考既可。
对于这个类的使用当然不用自己摸索,可以参考该博文:http://blog.csdn.net/hudashi/article/details/7986130
先依照官网的介绍有个大致的了解【来自银家博文】:
下面来把博文中说的例子给运行看下效果:
先声明服务MyIntentService:
public class MyIntentService extends IntentService { final static String TAG = "cexo"; public MyIntentService() { super("com.example.layouttest.MyIntentService"); Log.i(TAG, this + " is constructed"); } @Override protected void onHandleIntent(Intent arg0) { Log.i(TAG, "begin onHandleIntent() in " + this); try { Thread.sleep(5 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } Log.i(TAG, "end onHandleIntent() in " + this); } public void onDestroy() { super.onDestroy(); Log.i(TAG, this + " is destroy"); } }
然后再主界面去调这个服务MainActivity:
public class MainActivity extends Activity implements OnClickListener { // views private Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); button.setOnClickListener(this); } @Override public void onClick(View arg0) { Intent intent = new Intent(this, MyIntentService.class); startService(intent);// 连续发起了三次请求 startService(intent); startService(intent); } }
下面来看下运行的效果:
从运行效果可以发现跟Service的一个很大的区别在于,同时发出多个请求之后,当最后一个请求被处理,则整个Service也退出了,关于它真正的使用场景,待在实际工作中用到了再来总结,目前先学会怎么用它~
总结:
在网上搜到了一个关于IntentService的一个特点,我觉得有几点写出了它的好处: