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();
}
};
相关工程文件请下载:
http://download.csdn.net/detail/gdp2852/3792795