Android -- 简单广播接收与发送(2)--动态注册广播接收器

1. 效果图

2. 代码

  1. 布局文件

 <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/btn1" >
    </Button>

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/btn2" >
    </Button>

    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/btn3" >
    </Button>

main.xml

public class firstActivity extends Activity {
    public static final String MY_ACTION = "iflab.test.MY_ACTION"; // 自定义ACTION
    myReceiver receiver; // myReceiver对象

    @Override
    public void onCreate(Bundle savedInstanceState) { // 重载onCreate方法
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn1 = (Button) findViewById(R.id.button1); // 获取ID
        Button btn2 = (Button) findViewById(R.id.button2);
        Button btn3 = (Button) findViewById(R.id.button3);
        btn1.setOnClickListener(new View.OnClickListener() { // 设置监听器

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(); // Intent对象
                intent.setAction(MY_ACTION); // 设置Action
                intent.putExtra("message", "来自于广播的消息!"); // 设置广播的消息
                sendBroadcast(intent); // 发送广播
            }
        });
        btn2.setOnClickListener(new View.OnClickListener() { // 设置监听器

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                IntentFilter filter = new IntentFilter("iflab.test.MY_ACTION");
                receiver = new myReceiver();
                registerReceiver(receiver, filter); // 注册广播接收器
            }
        });
        btn3.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                unregisterReceiver(receiver); // 销毁广播接收器
            }
        });
    }

}

firstActivity

public class myReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context arg0, Intent arg1) {                //重载onReceive方法
        // TODO Auto-generated method stub
        String str;
        str="接收到的广播消息为:"+arg1.getStringExtra("message");    //接收消息
        Toast.makeText(arg0, str,Toast.LENGTH_LONG).show();        //显示
    }
}

myReceiver

  <receiver android:name="myReceiver" >
            <intent-filter>
            </intent-filter>
        </receiver>

配置文件

3. 提示

  没有注册广播接收器的时候不要点击销毁广播接收器   会停止运行  也算是一个小小的BUG吧  需要的用户自己进行一些操作

时间: 2024-08-21 15:37:53

Android -- 简单广播接收与发送(2)--动态注册广播接收器的相关文章

android动态注册广播监听服务demo

服务类,一定要在清单文件中注册 public class lightService extends Service { private boolean ifrun = false; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { super.onCreate(); System.

动态注册广播和静态注册广播的区别

广播接收器注册一共有两种形式 : 静态注册和动态注册. 两者及其接收广播的区别: 1.动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低. 2.动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期.注意: 在activity结束前,移除广播接收器. 静态注册是常驻型,也就是说即使app已经退出,主要有相应的广播发出,依然可以接收到,但此种描述自Android 3.1开始有可能不再成立. 详情请关注 http://www.cnblo

静态/动态注册广播的区别

广播接收器注册一共有两种形式 : 静态注册和动态注册. 两者及其接收广播的区别: 1.动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低>\ 2.动态注册广播不是常驻型广播,也就是说广播跟随activity的生命周期.注意: 在activity结束前,移除广播接收器. 静态注册是常驻型,也就是说当应用程序关闭后,如果有信息广播来,程序也会被系统调用自动运行. 3.在同一个优先级下,谁先启动的快,谁将先接收到广播. 动态注册代码: UpdateBro

利用服务动态注册广播

在ContextWrapper类中有一个方法registerReceiver(BroadcastReceiver receiver, IntentFilter filter) 该方法可以实现动态注册广播接受者 receiver = new ScreemRecevicer(); IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.SCREEN_OFF"); filter.add

安卓开发之动态注册广播(锁屏和解锁案例)

package com.lidaochen.test001; import android.content.Intent; import android.content.IntentFilter; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; public class MainActivity extends AppCompatActivit

动态注册广播,监听网络状态变化,判断网络模式

注册广播监听网络连接和断开状态的变化,判断网络连接模式: private ConnectivityManager mConnectivityManager; private NetworkInfo netInfo; /////////////监听网络状态变化的广播接收器 private BroadcastReceiver myNetReceiver = new BroadcastReceiver() { @Override public void onReceive(Context contex

BroadcastReceiver广播接收者(二)——利用AndroidManifest.xml注册广播接收者

MainActivity如下: package cc.testbroadcasta; import android.os.Bundle; import android.app.Activity; import android.content.Intent; /** * Demo描述: * 利用AndroidManifest.xml注册广播接收者 */ public class MainActivity extends Activity { @Override protected void onC

【Android】动态注册广播接收器

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.widget.Toast;

Android学习笔记(十一)BroadcastReceiver动态注册、注销示例

在上一篇博文中简单介绍了一下BroadcastReceiver的相关知识点,本篇举一个在代码中动态的注册.注销BroadcastReceiver的栗子. 1.首先创建一个MyReceiver并继承BroadcastReceiver,既然要动态注册该receiver的话,就无需在AndroidManifest.xml中配置它了: 1 public class MyReceiver extends BroadcastReceiver { 2 public static final String AC