Android 進程間通信 BroadcastReceiver

進程間通信,廣播接收者,這個我們經常會用到,比如檢測網絡變化,這個還是比較實用的,但是如何實現,其實很簡單,那我們就開始吧。

藉助於之前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);

 

就這麼多,功能完成。

 

源碼地址

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章