IntentService的优点
IntentService会创建单独的线程处理所有的Intent请求,
会处理onHandleIntent方法实现的代码,
隐藏开发者无须处理多线程问题,
当所有请求处理完成后,IntentService会自动停止
Action的使用
Action其实就是一个字符串,可以起到一个标识的作用
BroadcastReceiver的使用
BroadcastReceiver本质是一个监听器,有自己的进程
重写onReceive方法即可,但是在该方法里面不要执行耗时的操作,否则会ANR
发送
创建Intent
设置Action
putExtra
send发送
接收
实现onReceive方法
在AndroidManifest内增加配置
BroadcastReceiver
其他
开机自动运行的Service
第一步
动态注册广播
broadcastReceiver = new MyReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.example.space.text2.action.MSGTEXT");
//这个Action的作用是当发送为该Action的广播时,
该MyReceiver类的onReceive方法将会接收到并处理
registerReceiver(broadcastReceiver,intentFilter);
第二步
在Activity中添加一个UI组件,比如按钮
为按钮添加监听器
在该监听器内启动IntentService
Intent intent = new Intent(FinsihActivity.this,TextIntentService.class);
intent.setAction("com.example.space.text2.action.MSGFINSIH");
//设置该Action以便IntentService接收到Intent,
判断是哪个Action,如果是这个Action话,就进行相应处理
intent.putExtra("finish","这是finishactivity发送的消息");
FinsihActivity.this.startService(intent);
第三步
添加一个IntentService.java类,可以使用Android Studio的自动生成
注释掉没有用的代码
但是一定要保留protected void onHandleIntent(Intent intent) 和
public TextIntentService() {
super("TextIntentService");
}
方法
在protected void onHandleIntent(Intent intent) 方法中进行后台任务的处理即可
protected void onHandleIntent(Intent intent) {
if (intent != null) {
final String action = intent.getAction();
if (ACTION_MSGFINSIH.equals(action)) {
String param1 = intent.getStringE