zoukankan      html  css  js  c++  java
  • 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;   
    10@Override  
    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}   
    22@Override  
    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就是我们经常使用的

  • 相关阅读:
    判断两个链表是否相交
    【转】TCP连接突然断开的处理方法
    【转】TCP/IP协议——ARP详解
    HTTP协议COOKIE和SESSION有什么区别
    【转】K-Means聚类算法原理及实现
    【转】机器学习实战之K-Means算法
    unity3d 调用Start 注意
    u3d 加载PNG做 UI图片
    Opengl的gl_NormalMatrix
    OpenGL 遮挡查询
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6789010.html
Copyright © 2011-2022 走看看