進程間通信,廣播接收者,這個我們經常會用到,比如檢測網絡變化,這個還是比較實用的,但是如何實現,其實很簡單,那我們就開始吧。
藉助於之前activity 通信的demo 我們繼續。Activity 跨進程通信
這個比較簡單我們一切從簡,如果還有不懂後邊會貼出代碼下載地址
1.新建項目,接收Activity (ReceiveActivity)中自定類繼承自BroadcastReceiver 並且註冊,設置action
class MyReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null) {
String str = intent.getAction();
Toast.makeText(getApplicationContext(), intent.getAction() + intent.getStringExtra("info"), Toast.LENGTH_SHORT).show();
} else {
Log.d(TAG, "onReceive: onReceive is Null");
Toast.makeText(getApplicationContext(), "onReceive is Null", Toast.LENGTH_SHORT).show();
}
}
}
註冊廣播並且自定義action標籤,這個發送時要用到
broadcastReceiver = new MyReceive();
intentFilter = new IntentFilter();
intentFilter.addAction("com.test.receiver");
registerReceiver(broadcastReceiver, intentFilter);
現在用於接收的項目完畢了。
public class ReceiveActivity extends AppCompatActivity {
private static final String TAG = "ReceiveActivity";
/**
* Hello World!
*/
private TextView mTest;
BroadcastReceiver broadcastReceiver;
private IntentFilter intentFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(activity_main);
broadcastReceiver = new MyReceive();
intentFilter = new IntentFilter();
intentFilter.addAction("com.test.receiver");
registerReceiver(broadcastReceiver, intentFilter);
}
class MyReceive extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null && intent.getAction() != null) {
String str = intent.getAction();
Toast.makeText(getApplicationContext(), intent.getAction() + intent.getStringExtra("info"), Toast.LENGTH_SHORT).show();
} else {
Log.d(TAG, "onReceive: onReceive is Null");
Toast.makeText(getApplicationContext(), "onReceive is Null", Toast.LENGTH_SHORT).show();
}
}
}
}
2.現在新建項目,用於發送廣播消息
Intent intent1 = new Intent();
intent1.setAction("com.test.receiver");
intent1.putExtra("info", "內容");
sendBroadcast(intent1);
就這麼多,功能完成。