0

インテント ダウンロード サービスを作成しました。ダウンロード データを Toast とメイン アクティビティの Text に渡したいと考えています。ダウンロード サービスは、アラーム マネージャから繰り返し起動する必要があります。どうすればいいですか?

現在、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

個人的にはレシーバーが機能していなかったので、代わりにセッターメソッドを使用して変数を設定し、ゲッターメソッドを使用してそれらを特定のアクティビティに取得するシングルトンクラスを作成しました。

于 2016-02-10T16:10:23.313 に答える