public class HumorItem { public String text; public String url; } public class HumorItems { List<HumorItem> Items; // , , . }
public class LoadData extends AsyncTask<Void, Void, Void> { String _url=""; public LoadData(String url){ _url=url; } @Override protected Void doInBackground(Void... voids) { try { // HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(_url); HttpResponse response = httpclient.execute(httppost); HttpEntity httpEntity=response.getEntity(); InputStream stream = AndroidHttpClient.getUngzippedContent(httpEntity); // gzip- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); StringBuilder responseBuilder= new StringBuilder(); char[] buff = new char[1024*512]; int read; while((read = bufferedReader.read(buff)) != -1) { responseBuilder.append(buff, 0, read) ; Log.d(" " + PrepareSize(responseBuilder.length())); } // HumorItems list= Gson.fromJson(responseBuilder.toString(),HumorItems.class); // for (HumorItem message:list.Items){ Log.d(": "+message.text); Log.d(": "+message.url); Log.d("-------------------"); } Log.d(" "+list.Items.size()); } catch (IOException e) { e.printStackTrace(); Log.e(" "+e.getMessage()); } return null; } }
public class Log { public static final String TAG="hhh"; public static void d(String text){ android.util.Log.d(TAG,text); } public static void e(String text){ android.util.Log.e(TAG,text); } } public String PrepareSize(long size){ if (size<1024){ return size+" ."; }else { return size/1024+" ."; } }
<application [...] android:largeHeap="true">
public class LoadBigDataTmpFile extends AsyncTask<Void, Void, Void> { String _url=""; File cache_dir; public LoadBigDataTmpFile(String url){ _url=url; cache_dir = getExternalCacheDir(); } @Override protected Void doInBackground(Void... voids) { try { // HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(_url); HttpResponse response = httpclient.execute(httppost); HttpEntity httpEntity=response.getEntity(); InputStream stream = AndroidHttpClient.getUngzippedContent(httpEntity); // - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); File file = new File(cache_dir, "temp_json_new.json"); if (file.exists()){ // - file.delete(); } file.createNewFile(); FileOutputStream fileOutputStream=new FileOutputStream(file,true); BufferedWriter bufferedWriter=new BufferedWriter(new OutputStreamWriter(fileOutputStream)); char[] buff = new char[1024*1024]; int read; long FullSize=0; while((read = bufferedReader.read(buff)) != -1) { bufferedWriter.write(buff,0,read); // FullSize+=read; Log.d(" " + PrepareSize(FullSize)); } bufferedWriter.flush(); fileOutputStream.close(); // Log.d(" ..."); FileInputStream fileInputStream=new FileInputStream(file); InputStreamReader reader = new InputStreamReader(fileInputStream); HumorItems list= Gson.fromJson(reader,HumorItems.class); Log.d(" ."); / for (HumorItem message:list.Items){ Log.d(": "+message.text); Log.d(": "+message.url); Log.d("-------------------"); } Log.d(" "+list.Items.size()); } catch (IOException e) { e.printStackTrace(); Log.e(" "+e.getMessage()); } return null; } }
public class LoadBigData extends AsyncTask<Void, Void, Void> { String _url=""; public LoadBigData(String url){ _url=url; } @Override protected Void doInBackground(Void... voids) { try { // HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(_url); HttpResponse response = httpclient.execute(httppost); HttpEntity httpEntity=response.getEntity(); InputStream stream = AndroidHttpClient.getUngzippedContent(httpEntity); // BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(stream)); // InputStreamReader reader = new InputStreamReader(stream); HumorItems list= Gson.fromJson(reader,HumorItems.class); // for (HumorItem message:list.Items){ Log.d(": "+message.text); Log.d(": "+message.url); Log.d("-------------------"); } Log.d(" "+list.Items.size()); } catch (IOException e) { e.printStackTrace(); Log.e(" "+e.getMessage()); } return null; } }
file size | The number of objects inside | Deserialization time on the emulator | Deserialization time on Highscreen Boost |
5.79 MB | 4,000 | 35 seconds | 2 seconds |
13.3 MB | 9000 | 1 minute 11 seconds | 5 second |
Source: https://habr.com/ru/post/200898/