Chinaunix首页 | 论坛 | 博客
  • 博客访问: 637591
  • 博文数量: 171
  • 博客积分: 2246
  • 博客等级: 大尉
  • 技术积分: 1574
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-31 11:45
文章分类

全部博文(171)

文章存档

2018年(3)

2017年(4)

2015年(1)

2014年(20)

2013年(57)

2012年(86)

分类: Android平台

2012-07-25 13:23:58

转自http://hualikejava.iteye.com/blog/1461383

1.常驻型广播
  常驻型广播,当你的应用程序关闭了,如果有广播信息来,你写的广播接收器同样的能接受到,
  他的注册方式就是在你的应用程序中的AndroidManifast.xml进行注册。通常说这种方式是静态注册
  下面是配置例子

[html] view plaincopy
  1.    
  2. <receiver android:name=".widget.DeskWidgeWeather">  
  3. <meta-data android:name="android.appwidget.provider" android:resource="@xml/widget_weather_provider" />  
  4. <intent-filter>  
  5.  <action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>  
  6.  <action android:name="action_weather"/>  
  7. intent-filter>  
  8. lt;/receiver>  

2.非常驻型广播
   当应用程序结束了,广播自然就没有了,比如你在activity中的onCreate或者onResume中注册广播接收器
   在onDestory中卸载广播接收器。这样你的广播接收器就一个非常驻型的了。这种也叫动态注册。
   比如写一个监听SDcard状态的广播接收器



[java] view plaincopy
  1.   SdcardStateChanageReceiver sdcardStateReceiver;  
  2. @Override  
  3. protected void onCreate(Bundle savedInstanceState)  
  4. {  
  5.  super.onCreate(savedInstanceState);  
  6.  IntentFilter filter = new IntentFilter();  
  7.  filter.addAction(Intent.ACTION_MEDIA_REMOVED);  
  8.  filter.addAction(Intent.ACTION_MEDIA_EJECT);  
  9.  filter.addAction(Intent.ACTION_MEDIA_MOUNTED);  
  10.  filter.addDataScheme("file");  
  11.  sdcardStateReceiver = new SdcardStateChanageReceiver();   
  12.  registerReceiver(sdcardStateReceiver,filter);  
  13. }  
  14. @Override  
  15. protected void onDestroy(){  
  16.  unregisterReceiver(sdcardStateReceiver);  
  17. }  
  18. class SdcardStateChanageReceiver  extends BroadcastReceiver{  
  19.   
  20.   
  21.  @Override  
  22.  public void onReceive(Context context, Intent intent)  
  23.  {  
  24.   String state=android.os.Environment.getExternalStorageState();  
  25.   System.out.println("SDCard 发生改变! 状态:"+state);  
  26.   //checkSDCard();  
  27.  }  
  28.  public void checkSDCard(){  
  29.   String state=android.os.Environment.getExternalStorageState();  
  30.   System.out.println(state);  
  31.   if(state.equals(android.os.Environment.MEDIA_REMOVED ) || state .equals(android.os.Environment.MEDIA_UNMOUNTED)){  
  32.    System.out.println("SDCard 已卸载!");  
  33.   }  
  34.  }  
  35. }
阅读(2026) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~