2

サーバーにデータを送信することを目的としたAndroidアプリケーションを開発しています。ただし、Wi-Fi 接続がない場合もあるため、キャッシュを作成して複数のデータ セット (たとえば 3 セットなど) を保存することが可能かどうかを尋ねたいと思います。接続が利用可能になると、アプリはそれらのデータを自動的に送信します。 .

最近サーバーにデータを送信する方法は次のとおりです。

private class GrabURL extends AsyncTask<String, Void, Void>{
    //ArrayList object for storing the string pairs
    ArrayList<NameValuePair> nameValuePairs;

    public GrabURL() { 
        //constructor of the class
        nameValuePairs = new ArrayList<NameValuePair>(); 
      } 


    protected void onPreExecute(String key, String value) {
        //store the pair of values into the ArrayList 
        nameValuePairs.add(new BasicNameValuePair(key,value));
        }

    @Override
    protected Void doInBackground(String... urls) {
        // TODO Auto-generated method stub
        //Operation being executed in another thread
        try{
            //set up the type of HTTPClient
            HttpClient client = new DefaultHttpClient();
            //set up the location of the server
            HttpPost post = new HttpPost(urls[0]);
            //translate form of pairs to UrlEncodedFormEntity 
            UrlEncodedFormEntity ent = new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8);
            //set up the entity being sent by post method
            post.setEntity(ent);
            //execute the url and post the values
            //client.execute(post);
            HttpResponse responsePOST = client.execute(post); 
            HttpEntity resEntity = responsePOST.getEntity();
            line = EntityUtils.toString(resEntity);
         } catch (Exception e) {
             //catch the exception
            line = "Can't connect to server";
         }
        return null;
    }

    protected void onPostExecute(Void unused) {
        Toast.makeText(getApplicationContext(), "Value updated", Toast.LENGTH_SHORT).show();
    }
}
4

3 に答える 3

0

これは、オブジェクト+画像キャッシング用の抽象キャッシングライブラリを持つのに役立つ場合があります。

ジェネリックストア-for-android>>

于 2013-02-25T08:57:34.397 に答える
0

基本的なものを保存するには、単純にSharedPreferencesを使用できます。ネットワークが利用可能になるとすぐに、特定のキーを持つものが SharedPreferences に存在するかどうかを確認できます。永続的な環境 (SharedPreferences、Sqlite、SD カードまたは内部ストレージ内のファイルなど) 内にデータを書き込まない場合、アプリケーションを閉じるとデータが失われます。

于 2013-02-25T09:15:17.707 に答える
0

キャッシュデータは単純だと思います。メモリに保存するか、ファイルとして保存できます。接続が利用可能になったときに通知されるネットワーク状態変更イベントをリッスンできます。

これがサンプルコードです。

于 2012-07-31T02:53:49.387 に答える