1.注意廣播發起的動作,以及需要在AndroidMainfest.xml檔案中去註冊這個廣播,並且這個廣播需要用intent-filter進行過濾。
2.系統級的廣播,調用一樣,只是需要在AndroidMainfest.xml檔案中去註冊這個廣播,並且添加系統級過濾條件。
3.廣播也可以在代碼中註冊,但需要注意的是註冊的同時不要忘記去登出這個廣播:
一般是在Activity.onResume中去註冊這個廣播:
IntentFilter filter = new IntentFilter();
BroadcastReceiver receiver = new BroadcastReceiver();
registerBroadcast(receiver,filter);
一般是在Activity.onPause中去登出這個廣播
unRegisterBroadcast(receiver);
另外廣播盡量在代碼中註冊與銷毀,這樣可以節省裝置電池的使用,如果註冊在AndroidMainfest.xml中,則這個廣播一直存在,且不便於管理,耗電。
package com.king.android.controls;
import com.king.android.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/**
* 描述:發起廣播執行個體
* * 作者:Andy.Liu
* 時間: 2012-7-18 下午11:57:20
**/
public class BroadCastReceiverActivity extends Activity {
public static final String MY_BROADCAST ="com.king.android.MY_BROADCAST";
public static final String MY_WORD ="myword";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btnSend = (Button) findViewById(R.id.btn_voice);
btnSend.setText("發廣播");
btnSend.setVisibility(View.VISIBLE);
btnSend.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(MY_BROADCAST);
intent.putExtra(MY_WORD, "my name is kobe");
sendBroadcast(intent);
}
});
}
}
package com.king.android.controls;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;
/**
* 描述:接收廣播
* 作者:Andy.Liu
* 時間: 2012-7-18 下午11:58:14
**/
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String msg = intent.getStringExtra(BroadCastReceiverActivity.MY_WORD);
Toast.makeText(context, "已經接收廣播了============="+msg,Toast.LENGTH_LONG).show();
}
}