android学习笔记(17)广播事件处理进阶(注册方法)
2015-09-06 15:20
501 查看
对应苦水老师的第二十一课
前一课学习了广播的接收,用的是粗犷的方法,下面学学实用的。也就是它的注册方法。
注册BroadcastReceiver的方法:
1,在AndroidManifest.xml文件中进行注册
这种方法是最简单的,但是有个很大有问题是,这个recevicer与activity是无关的,当程序退出后,这个receiver仍然在运行,比如你的recevier调用了camera,当你用其它方式打开camera时,camera就在被占用的状态,就会出问题.
2,在应用程序的代码中进行注册
注册:
registerReceiver()
取消注册:
unregisterReceiver()
源码
MainActivity
点击register后再点击broadcast:能收到广播。
之前没有点击register或者点击了unregister后点击broadcast:都是收不到广播的。
附:
前一课学习了广播的接收,用的是粗犷的方法,下面学学实用的。也就是它的注册方法。
注册BroadcastReceiver的方法:
1,在AndroidManifest.xml文件中进行注册
这种方法是最简单的,但是有个很大有问题是,这个recevicer与activity是无关的,当程序退出后,这个receiver仍然在运行,比如你的recevier调用了camera,当你用其它方式打开camera时,camera就在被占用的状态,就会出问题.
2,在应用程序的代码中进行注册
注册:
registerReceiver()
取消注册:
unregisterReceiver()
源码
MainActivity
package com.example1.broadcastdemo; import com.example1.receiver.Receiver; import android.net.sip.SipAudioCall.Listener; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.content.IntentFilter; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { protected static final String action = "com.example1.broadcastdemo.ACTION"; private Button btnbc; private Button btnregister; private Button btnunregister; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnbc = (Button)findViewById(R.id.btnbc); btnregister = (Button)findViewById(R.id.btnregister); btnunregister = (Button)findViewById(R.id.btnunregister); btnbc.setOnClickListener(listener); btnregister.setOnClickListener(listener); btnunregister.setOnClickListener(listener); } private OnClickListener listener = new OnClickListener() { Intent intent = new Intent(); Receiver receiver; @Override public void onClick(View v) { switch (v.getId()) { case R.id.btnbc: intent.setAction(action); sendBroadcast(intent); break; case R.id.btnregister: receiver = new Receiver(); IntentFilter filter = new IntentFilter(); filter.addAction(action); registerReceiver(receiver, filter); break; case R.id.btnunregister: unregisterReceiver(receiver); break; default: break; } } }; }Receiver.java(在另一个包中)
package com.example1.receiver; import com.example1.broadcastdemo.MainActivity; import com.example1.broadcastdemo.ToastDemo; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; import android.widget.Toast; public class Receiver extends BroadcastReceiver { @Override public void onReceive(Context arg0, Intent arg1) { Toast toast = Toast.makeText(arg0, "收到广播", Toast.LENGTH_SHORT); toast.show(); } }
点击register后再点击broadcast:能收到广播。
之前没有点击register或者点击了unregister后点击broadcast:都是收不到广播的。
附:
[Android] Android系统广播Action
相关文章推荐
- Android开发中如何结束所有的activity
- Android 系统栏,状态栏的隐藏
- android的m、mm、mmm编译命令的使用
- LayoutInflater三种模式的差别
- android 制作9.png图片
- 解决android:background背景图片被拉伸问题
- Android(java)学习笔记214:开源框架的文件上传(只能使用Post)
- Android之AsyncTask异步加载
- android studio
- android 较高版本,页面分割线实现LinearLayoutCompat布局简单事例
- Android模拟位置实现
- android 较高版本,页面分割线实现LinearLayoutCompat布局简单事例
- arcgis for android 学习 - (7) 在真机上 模拟GPS
- android animation动画
- Android 学习 AIDL 的使用
- Android使用Messenger进行Service IPC通信分析 .
- android把自己的应用加入到系统分享中
- Android实战简易教程-第五十五枪(窃听风云之电话录音上传)
- 【Android控件布局】Layout 水平平分空间、垂直平分空间
- Android 自定义Spinner和下拉窗口