如何将Internet服务数据发送到主要活动?

问题描述 投票:0回答:2

我在FetchAddressIntentService类名addressText中有一个变量,它使用反向地理编码保存邮政编码。我想要的是将addressText数据发送到我的MainActivity。

android android-service
2个回答
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);
    }

}


0
投票

您可以通过两种方式实现这一目标。

  1. 通过让您的Activity实现一个侦听器接口,使用绑定服务并将您的Activity注册为您的服务的侦听器对象。文件here
  2. 从服务向您的活动发送本地广播。 (见JackD的回答)

根据您构建应用程序的方式,您可能更喜欢一种解决方案而不是另一种解决方案。 Android文档将提供最好的帮助。

© www.soinside.com 2019 - 2024. All rights reserved.