zoukankan      html  css  js  c++  java
  • [Android]三种广播接收器1

    /************ 动态注册 ************/

    ActivityMain.java 

    package home.lee.broadcastreceiver; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class TestMain extends Activity { BroadcastReceiver bcr;  //声明一个广播接收器 Button btSendMessage;   //声明一个按钮 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //实例化广播接收器对象  bcr = new BroadcastReceiver(){ public void onReceive(Context context, Intent intent) { Log.d("test", "^-^, Have received Massage!"); } }; //实例化按键对象并为其添加监听器 btSendMessage = (Button)findViewById(R.id.button01); btSendMessage.setOnClickListener(new ButtonListener()); } class ButtonListener implements OnClickListener{ public void onClick(View v) { //当点击按钮的时候,就发送广播 Intent intent = new Intent(); intent.setAction("ABC"); sendBroadcast(intent); } } protected void onStart() { super.onStart(); //注册广播接收器(动态注册) IntentFilter filter = new IntentFilter(); filter.addAction("ABC"); this.registerReceiver(bcr, filter); } protected void onStop() { super.onStop(); //取消注册广播接收器 this.unregisterReceiver(bcr); } }

    main.xml 

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> <Button android:id="@+id/button01" android:text="SendMessage" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </LinearLayout>


    /************ 静态注册 ************/

    AndroidManifest.xml 

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="lxy.litsoft" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ActivityMain" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="MyBroadcastReciever">   <intent-filter>   <action android:name="ABC"></action>   </intent-filter>   </receiver>   </application> </manifest>

    TestMain.java

    package lxy.litsoft; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class TestMain extends Activity { Button btSendMessage;   //声明一个按钮 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btSendMessage = (Button)findViewById(R.id.button01); btSendMessage.setOnClickListener(new ButtonListener()); } class ButtonListener implements OnClickListener{ public void onClick(View v) { //当点击按钮的时候,就发送广播 Intent intent = new Intent(); intent.setAction("ABC"); sendBroadcast(intent); } } }

    MyBroadcastReciever.java 

    package lxy.litsoft; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyBroadcastReciever extends BroadcastReceiver{ public void onReceive(Context context, Intent intent) { Log.d("test", "^-^, Have received Massage!"); } }


    动态注册和静态注册一个BroadcastReceiver的区别

    动态注册较静态注册灵活

    实验证明:当静态注册一个BroadcastReceiver时,不论应用程序开启与否,可以接受对应的广播。

    动态注册的时候,如果执行unregisterReceiver(); 方法取消注册,跟静态是一样的。但是如果执行该方法,当执行过以后,就不能接受广播了。

  • 相关阅读:
    codevs1735 方程的解数(meet in the middle)
    cf280C. Game on Tree(期望线性性)
    使用ASP.NET上传多个文件到服务器
    Oracle DB 数据库维护
    poj 3237(树链剖分+线段树)
    undefined reference to 'pthread_create'
    ios开发-调用系统自带手势
    Mysql创建、删除用户、查询所有用户等教程,提升您的MYSQL安全度!
    Number Sequence_hdu_1005(规律)
    SCU 4313 把一棵树切成每段K个点 (n%k)剩下的点不管
  • 原文地址:https://www.cnblogs.com/webapplee/p/3774022.html
Copyright © 2011-2022 走看看