0

我创建了一个意图下载服务,我想将下载数据传递给 Toast 和主要活动中的文本。下载服务应反复从报警管理器启动。我该怎么做呢?

目前,它没有显示在 Toast 中,但我有网络流量;数据已下载但未显示。

相关代码:

   public class DownloadService extends IntentService {

public String response;

  public DownloadService() {
    super("DownloadService");
  }

  // Will be called asynchronously be Android
  @Override
  protected void onHandleIntent(Intent intent) {

    //String urldown = intent.getStringExtra("url");
    String urldown="http://......";

        DefaultHttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(urldown);
        try {
          HttpResponse execute = client.execute(httpGet);
          InputStream content = execute.getEntity().getContent();

          BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
          String s = "";
          while ((s = buffer.readLine()) != null) {
            response += s;
          }

    } catch (IOException e) {
      e.printStackTrace();
    }
         Intent intentsend=new Intent("update");
          intentsend.putExtra( "downdata",response);
          sendBroadcast(intentsend); 
  }
4

2 回答 2

1

这可以通过以下方式实现BroadcastReceiver

在您的活动中,添加以下代码:

private BroadcastReceiver updateReceiver;

//...

@Override
protected void onResume() {
    super.onResume();

    updateReceiver=new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //get extras, do some stuff
        }
    };
    IntentFilter updateIntentFilter=new IntentFilter("update");
    registerReceiver(updateReceiver, updateIntentFilter);
}

@Override
protected void onPause() {
    super.onPause();

    if (this.updateReceiver!=null)
        unregisterReceiver(updateReceiver);
}

然后,在您的 中IntentService,只需发送具有相同操作的广播:

Intent intent=new Intent("update");
intent.putExtra(...);
sendBroadcast(intent);
于 2013-01-14T16:12:15.107 回答
0

就我个人而言,接收器没有工作,所以我创建了一个单例类,在其中我使用 setter 方法来设置变量,并使用 getter 方法将它们带到特定的活动中。

于 2016-02-10T16:10:23.313 回答