Android之廣播機制—本地廣播
阿新 • • 發佈:2019-01-09
本地廣播:
只在程式內部進行傳遞的廣播,傳送和接收都只在本程式有效。
傳遞,肯定是已經啟動了,因此也完全不需要靜態註冊。
只在程式內部進行傳遞的廣播,傳送和接收都只在本程式有效。
示例程式碼:
本地廣播是無法通過靜態註冊來實現的。因為靜態註冊是為了讓程式未啟動也能接收廣播。本地廣播是在本程式內進行public class MainActivity extends AppCompatActivity { private IntentFilter intentFilter; private LocalReceiver localReceiver; //本地廣播資料型別例項。 private LocalBroadcastManager localBroadcastManager; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); supportRequestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //獲取本地廣播例項。 localBroadcastManager=LocalBroadcastManager.getInstance(this); Button button=(Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent("com.example.tangyi.receiver5.LOCAL_BROADCAST"); //傳送本地廣播。 localBroadcastManager.sendBroadcast(intent); } }); //新建intentFilter並給其action標籤賦值。 intentFilter=new IntentFilter(); intentFilter.addAction("com.example.tangyi.receiver5.LOCAL_BROADCAST"); //建立廣播接收器例項,並註冊。將其接收器與action標籤進行繫結。 localReceiver=new LocalReceiver(); localBroadcastManager.registerReceiver(localReceiver,intentFilter); } @Override public void onDestroy(){//在onDestroy()方法中取消註冊。 super.onDestroy(); //取消註冊呼叫的是unregisterReceiver()方法,並傳入接收器例項。 localBroadcastManager.unregisterReceiver(localReceiver); } class LocalReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context,Intent intent){ Toast.makeText(context,"這是本地廣播接收器",Toast.LENGTH_SHORT).show(); } } }
傳遞,肯定是已經啟動了,因此也完全不需要靜態註冊。