Android 服務和廣播的使用
服務的使用
創建服務類
創建一個java文件,取名 mService.java,繼承Service。
public class mService extends Service {}
返回服務控制器
/** * 綁定服務 * * @param intent * @return */ @Override public IBinder onBind(Intent intent) { return new myControl(); }
創建一個中間類,來操作服務類方法。
/** * 中間類 */ public class myControl extends Binder { // 創建方法,可供其他activity內調用 public void mcontrol(String instructions) { // .... } }
創建服務
/** * 創建服務 */ @Override public void onCreate() { super.onCreate(); // ....創建服務時執行的方法 }
開啟服務
/** * 開啟服務 */ @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); }
activity使用服務
在需要使用服務的activity文件的 onCreate 文件中引入服務並啟動
// 啟動服務 Intent intent = new Intent(MainActivity.this, mService.class); startService(intent); conn = new mControl(); // 綁定服務 bindService(intent, conn, BIND_AUTO_CREATE);
創建中間類,用來操作服務中的方法
/** * 創建中間件對象 */ class mControl implements ServiceConnection { @Override public void onServiceConnected(ComponentName name, IBinder service) { control = (mService.myControl) service; } @Override public void onServiceDisconnected(ComponentName name) { } }
當activity中需要調用服務中的方法時
control.mcontrol("31");
服務使用就是這樣。
廣播的使用
發送廣播
// 發送廣播 Intent intent = new Intent(); intent.putExtra("temValue", temValue); intent.setAction("mService"); sendBroadcast(intent);
接受廣播
在需要接受廣播的 activity 中注冊廣播監聽者
// 注冊廣播監聽者 receiver = new mReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("mService"); MainActivity.this.registerReceiver(receiver, filter);
創建廣播監聽者內部類
// 廣播監聽者 public class mReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); temValue.setText(bundle.getString("temValue")); } }
廣播簡單的用法就這樣。