您的位置:首页 > 移动开发 > Android开发

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: