本文主要是介绍Android四大组件之Service之IntentService,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、IntentService的含义
异步的,会自动停止的服务。
二、IntentService和service的区别
service服务默认是运行在主线程中的,如果直接在服务中处理一些耗时的逻辑,就可能会出现ANR,所以我们一般都在服务的具体方法里开启一个新的线程去处理具体的逻辑,然后,这种类型的服务一旦启动后,就会一直运行,要想停止服务就得调用stopSeft()
然后Android专门提供了IntentService来简单的创建异步,自动停止的服务。
三、IntentService的使用
public class MyIntentService extends IntentService {public MyIntentService() {super("name");Log.d("Kathy", "Constructor");}@Overridepublic void onCreate() {super.onCreate();Log.d("Kathy", "onCreate()" + " ,Thread Name = " + Thread.currentThread().getName());}@Overrideprotected void onHandleIntent(@Nullable Intent intent) {Log.d("Kathy", intent.getStringExtra("data") + " ,Thread Name = " + Thread.currentThread().getName());try {Thread.sleep(30000);} catch (InterruptedException e) {e.printStackTrace();}}@Overridepublic void onDestroy() {super.onDestroy();Log.d("Kathy", "onDestroy()");}
}
public class IntentServiceDemoActivity extends AppCompatActivity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_intent_service_demo);Intent intent = new Intent(this,MyIntentService.class);intent.putExtra("data","Kathy");startService(intent);}
}
结果:
结果分析:可以看到在onHandleIntent执行了异步耗时操作,而且自动停止了服务。
四、原理分析
进来一个任务就会走onStartCommand()-->onStart(),就会往handler发一个消息,把任务信息带过去,在handler的handleMessage中走我们复写的onHandleIntent()处理任务。执行完onHandleIntent(),就会stopSelf(msg.arg1)。
这篇关于Android四大组件之Service之IntentService的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!