Android之进程通讯——广播

来源:互联网 发布:软件升级 增值税税率 编辑:程序博客网 时间:2024/05/16 18:47

不同进程间的通讯,其实Android的四大组件都可以实现。

日常,我们用广播,在一个独立的app中使用的较多。或者是系统和app之间使用。

在两个自定义的app之间,我们也写个例子,表明广播是很好用的!!

在这里就自定义两个app:BroadCastA(后面称为A)、BroadCastB(后面称为B)。A发送广播,B接收广播。

例子如下:

BroadCastA:

package com.example.broadcasta;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button btnButton=(Button)findViewById(R.id.send);btnButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubIntent intent=new Intent();intent.setAction("com.bill99.test");intent.putExtra("info", "传递内容");sendBroadcast(intent);}});}}


BroadCastB如下:

package com.example.broadcastb;import android.os.Bundle;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.text.TextUtils;import android.widget.Toast;public class MainActivity extends Activity {BroadcastReceiver broadcastReceiver;IntentFilter intentFilter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);intentFilter=new IntentFilter();intentFilter.addAction("com.bill99.test");broadcastReceiver=new MyReceiver();registerReceiver(broadcastReceiver, intentFilter);}class MyReceiver extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubif(intent!=null){   if(!TextUtils.isEmpty(intent.getAction())){   Toast.makeText(getApplicationContext(), intent.getAction(), Toast.LENGTH_SHORT).show();   }   if(!TextUtils.isEmpty(intent.getStringExtra("info"))){   Toast.makeText(getApplicationContext(), intent.getStringExtra("info"), Toast.LENGTH_SHORT).show();   }}}}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();unregisterReceiver(broadcastReceiver);}    }

两个app运行后,你在A中点击广播发送,在B中就可以收到广播和传递信息了。


源码:进程间广播通讯源码



1 3