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

时间:2016-12-24 20:16:07

标签: android android-service

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

2 个答案:

答案 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)

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

  1. 使用绑定服务,并通过让您的Activity实现一个侦听器接口,将您的Activity注册为您的服务的侦听器对象。文档here

  2. 从服务向您的活动发送本地广播。 (见JackD'答案)

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