Android进阶之路(零至一百)Android开发Android知识

跨进程通讯之广播实现

2017-04-17  本文已影响150人  Trap_余生

背景

Android中的广播有两种注册方式:
1,程序中动态注册; 
2,清单文件中静态注册;
#区别:作用域不同,动态注册的接收者只能在进程内通讯,而静态注册范围更广,可以跨进程通讯。

广播发送器

Button send = (Button) findViewById(R.id.send);//初始化控件
    send.setOnClickListener(new View.OnClickListener() {//监听
        @Override
        public void onClick(View v) {
            //通过Itent携带信息
            Intent intent = new Intent();
            intent.putExtra("flag","高级配置");
            //设置广播的action,只有和这个action一样的接受者才能接受才能接收广播
            intent.setAction("flag");
            //发送广播
            sendBroadcast(intent);
            Log.d("send", "高级配置");
        }
    });

广播接收者

在背景中可知,要想实现跨进程通讯需要静态注册广播

代码如下:
manifest文件中:
 <receiver android:name=".MyBroadCastReceiver">
        <intent-filter>
            <action android:name="flag"></action>
        </intent-filter>
    </receiver>


 知识点:静态注册广播需要单独写成类,不能写成内部类
 /**
 * Created by xuchen on 2017/4/17 9:22.
 * Email:chenxu4@iflytek.com
 *
 * 清单文件中静态注册:需要单独写成类
 */
public class MyBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
    String message = intent.getStringExtra("flag");
    Log.d("message","message="+message );

    }
}

日志切图

Paste_Image.png
知识点:
1,静态注册广播需要单独写成类,不能写成内部类;
2,先开启广播接受者进程再开启发送进程;
3,广播接收者开启一次就行
上一篇 下一篇

猜你喜欢

热点阅读