標籤:android des style blog http color
Broadcast和Service都是Android四大組建之一的。
這裡的廣播是動態,自己註冊的一個廣播。
這種最典型的用法就是利用開機廣播,然後再起自己的服務,也就是在Android手機中做到開啟啟動。
Service與Broadcast
public class MyService extends Service { private MyReceiver receiver; @Override public IBinder onBind(Intent intent) { // TODO 自動產生的方法存根 return null; } private void methodInService() { Toast.makeText(this, "我是服務的方法", Toast.LENGTH_LONG).show(); } @Override public void onCreate() { receiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("com.yydcdut.braodcasttoservice"); registerReceiver(receiver, filter); super.onCreate(); } private class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { System.out.println("我是service內部的廣播接收者!!"); methodInService(); } } @Override public void onDestroy() { unregisterReceiver(receiver); receiver = null; super.onDestroy(); }}
這裡的MyReceiver是一個內部類,沒有在AndroidManifest.xml中註冊這個組建,那麼就需要執行註冊廣播這個動作。
receiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("com.yydcdut.braodcasttoservice"); registerReceiver(receiver, filter);
IntentFilter也就與Manifest裡面的相同。也註冊也就有登出,當這個服務Destroy的時候就登出掉廣播。
MainActivity
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Intent intent = new Intent(this,MyService.class); startService(intent); } //Button public void call(View view) { Intent intent = new Intent(); intent.setAction("com.yydcdut.braodcasttoservice"); sendBroadcast(intent); }}
com.yydcdut.braodcasttoservice這個前後呼應,廣播就找到了這個Action。
我是天王蓋地虎的分割線
原始碼:http://pan.baidu.com/s/1dD1Qx01
利用廣播調用服務的方法.zip
轉載請註明出處:http://www.cnblogs.com/yydcdut