Android之BroadcastReceiver初步
今天接着写自己学习Android开发的笔记,这次记录一下BroadcastReceiver,看这个名字我们就知道他是干嘛的了,广播接收器吗,那么他有什么用呢?老夫以为用途还是比较大的,例如用户玩游戏的时候,我们必须在监听到手机来电事件、短信事件之后,暂停游戏保存游戏当时的数据,等用户接完电话、处理完短信之后再接着玩游戏。 之前我曾经说过,Android的四大组件都需要注册,方能使用,那么broadcast作为四大组件之一,也肯定需要注册,不同于其他组件的是broadcast有两种注册方法: 1,在AndroidManifest.xml中进行注册; 2.在代码中进行注册 既然有这两种注册方式,那么他们肯定会有区别,他们的区别又是什么呢? 在AndroidManifest.xml中进行注册,属于全局性的,也就是说无论你这个应用是否在运行,只要有某一他监听的广播被发出,那么他都会被监听到,这个的典型应用就是手机的黑名单功能,无论这个应用是否在运行,应该都可以监听用户手机的来电,进行过滤;而在代码中进行注册呢?肯定就不是全局的了,只有你这个应用启动的时候,他才会监听他所监听的事件,这个的典型应用就是,用于更新应用的UI,在activity启动的时候注册BroadcastReceiver,在activity不可见之后取消注册,因为activity不可见的时候更新UI,除了浪费CPU浪费电之外没有任何意义,好,下面我们就看看这两种方法的实现。 1,在AndroidManifest.xml中进行注册 package cn.bridgeli.demo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button send = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); send = (Button) findViewById(R.id.send); send.setText("Send Broadcast"); send.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.start: Intent intent = new Intent(); intent.setAction(Intent.ACTION_EDIT); sendBroadcast(intent); break; default: break; } } } 对应的布局文件其实很简单 ...