2

我正在开发一个 android 应用程序,其目的是将一些数据发送到服务器。但是,有时可能没有wifi连接,所以我想问一下是否可以创建一个缓存来存储多组数据,比如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 回答