package com.android.broadcastmul;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText edit1, edit2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button send = (Button)findViewById(R.id.send);
edit1 = (EditText)findViewById(R.id.edit1);
edit2 = (EditText)findViewById(R.id.edit2);
send.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, ActivityB.class);
startActivity(intent);
// UI 线程不安全,所以启动一个子线程
new Thread(new Runnable() {
@Override
public void run() {
Intent it = new Intent();
it.setAction("com.android.broadcastmul");
String str1 = edit1.getText().toString();
String str2 = edit2.getText().toString();
it.putExtra("first", str1);
it.putExtra("second", str2);
sendBroadcast(it);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
});
}
}
package com.android.broadcastmul;
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.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.EditText;
import android.widget.TextView;
public class ActivityB extends Activity {
private Handler handler;
TextView textView;
MyReceiver receiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
// 动态注册,就不需要在 AndroidManifest.xml 中注册(四大组件都要注册)
IntentFilter filter = new IntentFilter();
filter.addAction("com.android.broadcastmul");
receiver = new MyReceiver();
registerReceiver(receiver, filter);
textView = (TextView)findViewById(R.id.textView);
handler = new Handler(){
@Override
public void handleMessage(Message msg) {
if (msg.what == 0x123){
textView.setText(msg.obj + "");
}
}
};
}
private class MyReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String str1 = intent.getStringExtra("first");
String str2 = intent.getStringExtra("second");
int sum =subCount(str1, str2);
Message msg = handler.obtainMessage();
msg.what = 0x123;
msg.obj = sum;
handler.sendMessage(msg);
}
}
private int subCount(String str1, String str2){
int a1 = Integer.parseInt(str1);
int a2 = Integer.parseInt(str2);
int sum = a1 + a2;
return sum;
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
}