我在FetchAddressIntentService类名addressText中有一个变量,它使用反向地理编码保存邮政编码。我想要的是将addressText数据发送到我的MainActivity。
答案 0 :(得分:1)
您必须将您的主要活动注册到广播,然后从该服务发送广播。
在您的主要活动中:
private BroadcastReceiver receiver;
@Override
public void onCreate(Bundle savedInstanceState){
IntentFilter filter = new IntentFilter();
filter.addAction("BROADCAST_ZIP_CODE");
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//get data from the intent and display it
String zipCode = intent.getStringExtra("ZIP_CODE");
//do something with the zipCode
}
};
registerReceiver(receiver, filter);
}
@Override
protected void onDestroy() {
if (receiver != null) {
unregisterReceiver(receiver);
receiver = null;
}
super.onDestroy();
}
在您的服务中:
public class ZipCodeService extends Service {
@Override
public void onCreate() {
String zipCode = "your_zip_code";
Intent intent = new Intent();
intent.setAction("BROADCAST_ZIP_CODE");
intent.putExtra("ZIP_CODE",zipCode);
sendBroadcast(intent);
}
}
答案 1 :(得分:0)
您可以通过两种方式实现这一目标。
使用绑定服务,并通过让您的Activity实现一个侦听器接口,将您的Activity注册为您的服务的侦听器对象。文档here。
从服务向您的活动发送本地广播。 (见JackD'答案)
根据您构建应用程序的方式,您可能更喜欢一种解决方案而不是另一种解决方案。 Android文档将提供最好的帮助。