Android 注册广播的两种方式区别

1.常驻型广播
<wbr><wbr>常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到,<br><wbr><wbr>他的注册方式就是在你的应用程序中的AndroidManifast.xml进行注册。通常说这种方式是静态注册<br><wbr><wbr>下面是配置例子 <p><span><span><wbr>&lt;!--<wbr>桌面<wbr>--&gt; <wbr><wbr></wbr></wbr></wbr></wbr></wbr></span></span></p> <p><span>&lt;receiver<wbr>android:name=</wbr></span><span>".widget.DeskWidgeWeather"</span><span>&gt; <wbr><wbr></wbr></wbr></span></p> <p><span>&lt;meta-data<wbr>android:name=</wbr></span><span>"android.appwidget.provider"</span><span><wbr>android:resource=</wbr></span><span>"@xml/widget_weather_provider"</span><span><wbr>/&gt; <wbr><wbr></wbr></wbr></wbr></span></p> <p><span>&lt;intent-filter&gt; <wbr><wbr></wbr></wbr></span></p> <p><span><wbr>&lt;action<wbr>android:name=</wbr></wbr></span><span>"android.appwidget.action.APPWIDGET_UPDATE"</span><span>/&gt; <wbr><wbr></wbr></wbr></span></p> <p><span><wbr>&lt;action<wbr>android:name=</wbr></wbr></span><span>"action_weather"</span><span>/&gt; <wbr><wbr></wbr></wbr></span></p> <p><span>&lt;/intent-filter&gt; <wbr><wbr></wbr></wbr></span></p> <p><span>lt;/receiver&gt;<wbr><wbr></wbr></wbr></span></p> <p><span><wbr> 2.非常驻型广播<br><wbr><wbr> 当应用程序结束了,广播自然就没有了,比如你在activity中的onCreate或者onResume中注册广播接收器<br><wbr><wbr> 在onDestory中卸载广播接收器。这样你的广播接收器就一个非常驻型的了。这种也叫动态注册。<br><wbr><wbr> 比如写一个监听SDcard状态的广播接收器</wbr></wbr></wbr></wbr></wbr></wbr></wbr></span></p> <p>SdcardStateChanageReceiv<wbr>er<wbr>sdcardStateReceiver; <wbr><wbr></wbr></wbr></wbr></wbr></p> <p><span><span style="color:#646464">@Override</span></span><span><wbr><wbr></wbr></wbr></span></p> <p><span>protected</span><span><wbr></wbr></span><span>void</span><span><wbr>onCreate(Bundle<wbr>savedInstanceState) <wbr><wbr></wbr></wbr></wbr></wbr></span></p> <p><span>{ <wbr><wbr></wbr></wbr></span></p> <p><span><wbr></wbr></span><span>super</span><span>.onCreate(savedInstanceState); <wbr><wbr></wbr></wbr></span></p> <p><span><wbr>IntentFilter<wbr>filter<wbr>=<wbr></wbr></wbr></wbr></wbr></span><span>new</span><span><wbr>IntentFilter(); <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr>filter.addAction(Intent.ACTION_MEDIA_REMOVED); <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr>filter.addAction(Intent.ACTION_MEDIA_EJECT); <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr>filter.addAction(Intent.ACTION_MEDIA_MOUNTED); <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr>filter.addDataScheme(</wbr></span><span>"file"</span><span>); <wbr><wbr></wbr></wbr></span></p> <p><span><wbr>sdcardStateReceiver<wbr>=<wbr></wbr></wbr></wbr></span><span>new</span><span><wbr>SdcardStateChanageReceiv<wbr>er();<wbr><wbr><wbr></wbr></wbr></wbr></wbr></wbr></span></p> <p><span><wbr>registerReceiver(sdcardStateReceiver,filter); <wbr><wbr></wbr></wbr></wbr></span></p> <p><span>} <wbr><wbr></wbr></wbr></span></p> <p><span><span style="color:#646464">@Override</span></span><span><wbr><wbr></wbr></wbr></span></p> <p><span>protected</span><span><wbr></wbr></span><span>void</span><span><wbr>onDestroy(){ <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr>unregisterReceiver(sdcardStateReceiver); <wbr><wbr></wbr></wbr></wbr></span></p> <p><span>} <wbr><wbr></wbr></wbr></span></p> <p><span>class</span><span><wbr>SdcardStateChanageReceiv<wbr>er<wbr><wbr></wbr></wbr></wbr></wbr></span><span>extends</span><span><wbr>BroadcastReceiver{ <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr><wbr></wbr></wbr></span></p> <p><span><wbr></wbr></span><span><span style="color:#646464">@Override</span></span><span><wbr><wbr></wbr></wbr></span></p> <p><span><wbr></wbr></span><span>public</span><span><wbr></wbr></span><span>void</span><span><wbr>onReceive(Context<wbr>context,<wbr>Intent<wbr>intent) <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></span></p> <p><span><wbr>{ <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr><wbr>String<wbr>state=android.os.Environment.getExternalStorageState(); <wbr><wbr></wbr></wbr></wbr></wbr></wbr></span></p> <p><span><wbr><wbr>System.out.println(</wbr></wbr></span><span>"SDCard<wbr>发生改变!<wbr>状态:"</wbr></wbr></span><span>+state); <wbr><wbr></wbr></wbr></span></p> <p><span><wbr><wbr></wbr></wbr></span><span>//checkSDCard();</span> <span><wbr><wbr></wbr></wbr></span></p> <p><span><wbr>} <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr></wbr></span><span>public</span><span><wbr></wbr></span><span>void</span><span><wbr>checkSDCard(){ <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><wbr><wbr>String<wbr>state=android.os.Environment.getExternalStorageState(); <wbr><wbr></wbr></wbr></wbr></wbr></wbr></span></p> <p><span><wbr><wbr>System.out.println(state); <wbr><wbr></wbr></wbr></wbr></wbr></span></p> <p><span><wbr><wbr></wbr></wbr></span><span>if</span><span>(state.equals(android.os.Environment.MEDIA_REMOVED<wbr>)<wbr>||<wbr>state<wbr>.equals(android.os.Environment.MEDIA_UNMOUNTED)){ <wbr><wbr></wbr></wbr></wbr></wbr></wbr></wbr></span></p> <p><span><wbr><wbr><wbr>System.out.println(</wbr></wbr></wbr></span><span>"SDCard<wbr>已卸载!"</wbr></span><span>); <wbr><wbr></wbr></wbr></span></p> <p><span><wbr><wbr>} <wbr><wbr></wbr></wbr></wbr></wbr></span></p> <p><span><wbr>} <wbr><wbr></wbr></wbr></wbr></span></p> <p><span><span>}<wbr></wbr></span><wbr></wbr></span></p> <p>本文转载自:<a href="http://blog.sina.com.cn/s/blog_8ae46d150101163e.html">http://blog.sina.com.cn/s/blog_8ae46d150101163e.html</a></p> </wbr></wbr></wbr></wbr></wbr></wbr>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值