2

一連の http 要求を送信する必要があります。1 分間に 1 秒あたり 1 回です。知る限り、それはバッテリーの使用に影響を与えます。この種の問題を処理するための特別な戦略はありますか?

UPD: POST リクエストを使用する必要があり、これが私の POST リクエスト関数です:

 URL url;
  HttpURLConnection connection = null;
  try {
    //Create connection
    url = new URL(targetURL);
    connection = (HttpURLConnection)url.openConnection();
    connection.setRequestMethod("POST");
    connection.setConnectTimeout(3000);
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

    connection.setRequestProperty("Content-Length", "" + 
             Integer.toString(urlParameters.getBytes().length));
    connection.setRequestProperty("Content-Language", "en-US");

    if(headers != null){
        for (String key : headers.keySet()) {
            connection.setRequestProperty(key, headers.get(key));
        }
    }

    connection.setUseCaches (false);
    connection.setDoInput(true);
    connection.setDoOutput(true);

    //Send request
    DataOutputStream wr = new DataOutputStream (
                connection.getOutputStream ());
    wr.writeBytes (urlParameters);
    wr.flush ();
    wr.close ();

    //Get Response  
    InputStream is = connection.getInputStream();
    BufferedReader rd = new BufferedReader(new InputStreamReader(is));
    String line;
    StringBuffer response = new StringBuffer(); 
    while((line = rd.readLine()) != null) {
      response.append(line);
      response.append('\r');
    }
    rd.close();

    Log.d("response", response.toString());

    return response.toString();

  } catch (Exception e) {

    e.printStackTrace();
    return null;

  } finally {

    if(connection != null) {
      connection.disconnect(); 
    }
  }

問題に関してパフォーマンスを向上させるためにできることはありますか?

4

2 に答える 2

3

これは、まさにこのトピックに関する Google I/O のビデオです。

Google I/O

要するに:

各要求は、ラジオをスタンバイから復帰させ、フル パワーにします。リクエストが送信された後、しばらくの間このままになり、さらにしばらくの間低電力状態になり、最終的に再びスタンバイに戻ります。

一連の小さなリクエストを行うと、各リクエストはラジオをフルパワーにトリガーし、リクエスト間の間隔が短すぎるとスタンバイモードにはなりません.

ただし、リクエストを蓄積し (アプリがリモート データをそれほど頻繁に表示する必要がない場合)、それらをバッチとして送信するが、それほど頻繁ではない場合は、無線のトリガーが少なくなり、バッテリー寿命が節約されます。

于 2012-07-18T13:09:41.753 に答える
1

あなたの質問が何であるかはわかりませんが、どういうわけか自分自身に答えました.アクティビティが少ない場合よりも、アクティビティが多いほどバッテリーが消耗します. それはかなり明白なので、バッテリーの使用量を減らしたいと仮定すると、特別な戦略は...まあ、あなたの活動を減らすことです. HTTP 呼び出しをグループ化し、サーバー側を作り直して効率を高め、呼び出しをバッチで実行して無線のフル パワー状態を使用します。

于 2012-07-18T13:11:56.620 に答える