Android组件——IntentService的使用(随笔2)
2017-03-07 22:47
501 查看
二、IntentService
1、在AndroidManifest.xml文件中注册IntentService<service android:name=".testintentservice.MyIntentService"
android:enabled="true"
android:exported="false">
</service>
2、继承IntentService
public class MyIntentService extends IntentService {
private int i;
private Context context;
//需要一个空的构造方法,以便系统实例化此IntentService
public MyIntentService(){
super("MyIntentService");
}
//在此方法中执行你想要的操作,可以执行一些耗时较长的操作,因为此IntentService的执行线程是一个新的线程,但是一个
单线程,即每次只能执行一个任务(intent)。当所有的请求都被处理后,IntentService就自动关闭它自己,不需要我们去调用
stopSelf方法 @Override protected void onHandleIntent(Intent intent) { String str= (String) intent.getExtras().get("key"); Log.i("LZH","第"+i+"次启动service"); Intent intent1=new Intent(); intent1.setAction(MyStatus.BROADCAST_ACTION); Bundle bundle=new Bundle(); bundle.putString(MyStatus.BROADCAST_DATA_STATUS,"hello"); intent1.putExtras(bundle); LocalBroadcastManager.getInstance(this).sendBroadcast(intent1); Log.i("LZH","send"); } }
3、实现Activity
public class INActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter intentFilter=new IntentFilter(MyStatus.BROADCAST_ACTION);
intentFilter.addCategory("android.intent.category.DEFAULT");
MyBroadcast myBroadcast=new MyBroadcast();
//在本地广播中注册广播,另本地广播和组件广播不相同,是彼此独立的
LocalBroadcastManager.getInstance(this).registerReceiver(myBroadcast,intentFilter);
}
public void start(View view){
Intent intent=new Intent(this,MyIntentService.class);
Bundle bundle=new Bundle();
bundle.putString("key","hi");
intent.putExtras(bundle);
startService(intent);
}
}
4、实现本地广播
public class MyBroadcast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.i("LZH","start broadcast");
String str= (String) intent.getExtras().get(MyStatus.BROADCAST_DATA_STATUS);
Log.i("LZH","get "+str);
}
}
总结:
一、继承IntentService
1、需要在IntentService中重写onhandleIntent();
2、需要写一个参数为空的构造方法;
二、在AndroidManifest.xml文件中注册service
1、注册service时,不需要使用<intent-filter>,只能用显式的Intent启动IntentService,因为只有在同一个应用程序内的组件或拥有相同用户ID的应用程序的组件才能连接到IntentService
相关文章推荐
- Android 四大组件之特殊Service(IntentService)的使用
- Android开发中IntentService的使用(二)
- Android开发之基本组件学习-----------Intent的使用
- 【转自唐忍】Android中IntentService的原理及使用
- Android中IntentService的原理及使用
- Android开发之Service与IntentService的区别与使用场景(源代码剖析)
- Android 中的context, service,active和intent使用详解
- Android中Service与IntentService的使用比较
- Android基本功:IntentService的使用
- Android中IntentService的原理及使用
- [Android Pro] Android中IntentService的原理及使用
- Android开发中IntentService的使用(一)
- Android Intent组件使用
- Android中的context、activity、intent、service使用详解
- Android Intent组件使用
- Android开发中IntentService的使用
- 01 Android应用的构成 四大组件 Activity, Intent Receiver , Service , Content Provider
- android中对Looper、HandlerThread、IntentService的理解及使用方法
- Android IntentService 的使用
- 【IntentService】Android中IntentService的原理及使用