廣播接收者註冊
清單文件註冊
廣播接收者永遠生效,除非卸載應用,或者手動停止進程
使用代碼註冊
需要廣播接收者生效時,註冊它,不需要時,反註冊它,反註冊之後,廣播接收者就失效瞭 特殊廣播接收者,必須代碼註冊
屏幕開關 電量改變
使用服務註冊廣播接收者
* Android四大組件都要在清單文件中註冊
* 廣播接收者可以使用清單文件註冊
* 一旦應用部署,廣播接收者就生效瞭,直到用戶手動停止應用或者應用被刪除
* 廣播接收者可以使用代碼註冊
* 需要廣播接收者運行時,使用代碼註冊,不需要時,可以使用代碼解除註冊
* 電量改變、屏幕開關,必須使用代碼註冊
註冊廣播接收者
//創建廣播接收者對象
receiver = new ScreenOnOffReceiver();
//通過IntentFilter對象指定廣播接收者接收什麼類型的廣播
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
//註冊廣播接收者
registerReceiver(receiver, filter);
解除註冊廣播接收者
unregisterReceiver(receiver);
解除註冊之後,廣播接收者將失去作用
public class ScreenOnOFFReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(Intent.ACTION_SCREEN_ON.equals(action)){
System.out.println("屏幕開啦啦");
}
else if(Intent.ACTION_SCREEN_OFF.equals(action)){
System.out.println("屏幕關哇哇");
}
}
}
public class RegisterService extends Service {
private ScreenOnOFFReceiver receiver;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate() {
super.onCreate();
//1.創建廣播接收者對象
receiver = new ScreenOnOFFReceiver();
//2.創建意圖過濾器對象
IntentFilter filter = new IntentFilter();
//指定接收什麼廣播
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
//3.註冊廣播接收者
registerReceiver(receiver, filter);
}
@Override
public void onDestroy() {
super.onDestroy();
//反註冊廣播接收者
unregisterReceiver(receiver);
}
}
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void start(View v){
Intent intent = new Intent(this, RegisterService.class);
startService(intent);
}
public void stop(View v){
Intent intent = new Intent(this, RegisterService.class);
stopService(intent);
}
}