安卓广播超时的原因分析及优化建议
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓广播超时的原因分析及优化建议相关的知识,希望对你有一定的参考价值。
参考技术A 最终工作中经常碰到广播超时的问题,于是花精力总结了一番,各位客官请看~从图中可以看出决定广播B接受者的广播接受是否超时,取决于广播A处理的时间和广播B处理的时间
Android 常驻与很驻型广播的差别,及ListView优化,Android新手基本知识巩固
1.常驻型广播
常驻型广播,当你的应用程序关闭了,假设有广播信息来,你写的广播接收器相同的能接受到。
他的注冊方式就是在你的应用程序中的AndroidManifast.xml进行注冊。
通常说这样的方式是静态注冊
以下是配置样例
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> 8lt;/receiver>
2.很驻型广播
当应用程序结束了,广播自然就没有了,比方你在activity中的onCreate或者onResume中注冊广播接收器
在onDestory中卸载广播接收器。这样你的广播接收器就一个很驻型的了。
这样的也叫动态注冊。
比方写一个监听SDcard状态的广播接收器
9SdcardStateChanageReceiver sdcardStateReceiver; [email protected] 11protected void onCreate(Bundle savedInstanceState) 12{ 13 super.onCreate(savedInstanceState); 14 IntentFilter filter = new IntentFilter(); 15 filter.addAction(Intent.ACTION_MEDIA_REMOVED); 16 filter.addAction(Intent.ACTION_MEDIA_EJECT); 17 filter.addAction(Intent.ACTION_MEDIA_MOUNTED); 18 filter.addDataScheme("file"); 19 sdcardStateReceiver = new SdcardStateChanageReceiver(); 20 registerReceiver(sdcardStateReceiver,filter); 21} [email protected] 23protected void onDestroy(){ 24 unregisterReceiver(sdcardStateReceiver); 25} 26class SdcardStateChanageReceiver extends BroadcastReceiver{ 27 28 @Override 29 public void onReceive(Context context, Intent intent) 30 { 31 String state=android.os.Environment.getExternalStorageState(); 32 System.out.println("SDCard 发生改变! 状态:"+state); 33 //checkSDCard(); 34 } 35 public void checkSDCard(){ 36 String state=android.os.Environment.getExternalStorageState(); 37 System.out.println(state); 38 if(state.equals(android.os.Environment.MEDIA_REMOVED ) || state .equals(android.os.Environment.MEDIA_UNMOUNTED)){ 39 System.out.println("SDCard 已卸载!"); 40 } 41 } 42}
ListView优化方法之中的一个
写一个ViewHolder 内部类把须要反复用到的View放进去。ViewHolder Tag把标记这些View
content provider怎样发送信息
用一个Intent意图的PutExtra()方法把消息加进去。注冊一个BroadCastRecriver接收消息,更新Activity中的信息
安卓生命周期分哪几种
1. 前台进程。这种进程拥有一个在屏幕上显示并和用户交互的 activity 或者它的一个IntentReciver 正在执行。这种程序重要性最高。仅仅有在系统内存很低,万不得已时才会被结束。
2. 可见进程。
在屏幕上显示,可是不在前台的程序。比方一个前台进程以对话框的形式显示在该进程前面。
这种进程也非常重要,它们仅仅有在系统没有足够内存执行全部前台进程时,才会被结束。
3. 服务进程。这种进程在后台持续执行,比方后台音乐播放、后台数据上传下载等。
这种进程对用户来说一般非常实用。所以仅仅有当系统没有足够内存来维持全部的前台和可见进程时。才会被结束。
4. 后台进程。这种程序拥有一个用户不可见的 activity。
这种程序在系统内存不足时。依照 LRU 的顺序被结束。
5. 空进程。这种进程不包括不论什么活动的程序部件。系统可能随时关闭这类进程。
非常多基础知识都是我们日常开发用得到的。不要忽视了。事实上有时候它们起着非常关键的数据,比方ListView就是我们经常使用的
以上是关于安卓广播超时的原因分析及优化建议的主要内容,如果未能解决你的问题,请参考以下文章