Service要给Activity传递消息,需要用到广播。
这里,使用的是前两个例子的代码,只是在Service每隔2秒就自动发送一个广播。而activity在收到广播后,更新一个textview的显示。
Service的代码:
- private void doInBackground() {
- new Thread(new Runnable() {
- public void run() {
- for (int i = 0; i < 10; i++) {
- Intent intent = new Intent("com.gdp2852.demo.service.broadcast");
- intent.putExtra("i", ""+i);
- sendBroadcast(intent);
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }).start();
- }
Receiver的代码:
- IntentFilter filter = new IntentFilter("com.gdp2852.demo.service.broadcast");
- registerReceiver(receiver, filter);
- private BroadcastReceiver receiver = new BroadcastReceiver() {
- public void onReceive(Context context, Intent intent) {
- TextView tv = (TextView) findViewById(R.id.tv);
- tv.setText("发送过来的内容:"+intent.getExtras().getString("i"));
- Toast.makeText(Demo_ServiceActivity.this, intent.getAction()+" i:"+intent.getExtras().getString("i"), Toast.LENGTH_LONG).show();
- }
- };