zoukankan      html  css  js  c++  java
  • 面试准备(一) 注册广播有哪几种方式,有什么区别

    BroadcastReceiver用于监听被广播的事件

    必须被注册,有两种方法:

    1、在应用程序的代码中注册

    注册BroadcastReceiver:

    registerReceiver(receiver,filter);

    取消注册BroadcastReceiver:

    unregisterReceiver(receiver);

    当BroadcastReceiver更新UI,通常会使用这样的方法注册。启动Activity时候注册BroadcastReceiver,Activity不可见时候,取消注册。

    2、在androidmanifest.xml当中注册

    <receiver>

        <intent-filter>

         <action android:name = "android.intent.action.PICK"/>

        </intent-filter>

    </receiver>

     

    1)第一种不是常驻型广播,也就是说广播跟随程序的生命周期。

    2)第二种是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行。

    使用这样的方法注册弊端:它会始终处于活动状态,毕竟是手机开发,cpu和电源资源比较少,一直处于活动耗费大,不利。

    动态注册一个SD卡事件监听:

      SdcardStateChanageReceiver sdcardStateReceiver;   
    @Override  
    protected void onCreate(Bundle savedInstanceState)   
    {   
     super.onCreate(savedInstanceState);   
     IntentFilter filter = new IntentFilter();   
     filter.addAction(Intent.ACTION_MEDIA_REMOVED);   
     filter.addAction(Intent.ACTION_MEDIA_EJECT);   
     filter.addAction(Intent.ACTION_MEDIA_MOUNTED);   
     filter.addDataScheme("file");   
     sdcardStateReceiver = new SdcardStateChanageReceiver();    
     registerReceiver(sdcardStateReceiver,filter);   
    }   
    @Override  
    protected void onDestroy(){   
     unregisterReceiver(sdcardStateReceiver);   
    }   
    class SdcardStateChanageReceiver  extends BroadcastReceiver{   
      
     @Override  
     public void onReceive(Context context, Intent intent)   
     {   
      String state=android.os.Environment.getExternalStorageState();   
      System.out.println("SDCard 发生改变! 状态:"+state);   
      //checkSDCard();   
     }   
     public void checkSDCard(){   
      String state=android.os.Environment.getExternalStorageState();   
      System.out.println(state);   
      if(state.equals(android.os.Environment.MEDIA_REMOVED ) || state .equals(android.os.Environment.MEDIA_UNMOUNTED)){   
       System.out.println("SDCard 已卸载!");   
      }   
     }   
    }   
  • 相关阅读:
    函数执行的预解释
    数组的基本知识点
    前端开发概述+JS基础细节知识点
    JS数据类型的转换规则
    call,apply,求最大最小值,平均数等基础编程知识
    JS面向对象程序设计(OOP:Object Oriented Programming)
    C++ 手记
    C++ 在堆中申请内存方法
    vc驿站视频教程笔记4 Cstring 讲解
    vc驿站视频教程笔记2 ansi 和 unicode
  • 原文地址:https://www.cnblogs.com/AceIsSunshineRain/p/5182795.html
Copyright © 2011-2022 走看看