我的Android应用程序需要在达到一定的内存限制后将数据发送到服务器。我正在使用 -
检查内部存储器StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks();
long megAvailable = bytesAvailable / (1024 * 1024);
Log.e("","Available MB : "+ megAvailable);
假设可用MB最初为800MB。我有一个对象的ArrayList,每隔10秒就会继续添加元素。一旦我的可用MB变为700MB,我希望将ArrayList中的数据发送到服务器。
我想知道当可用MB变为700MB时 -
a)如何从ArrayList检索数据从第0个位置到当前位置(可用MB变为700MB的位置)并立即发送所有数据。
b)发送清除arraylist并开始存储新数据,直到Available MB变为600MB
答案 0 :(得分:1)
将数据添加到arraylist时,您可以保持计数。当您调用该方法以查明是否已触及700 mb时,您可以将该计数作为参数发送。
您可以调用ArrayList的子列表方法
int to = 4;
int from = 0;
al.subList(from, to);
您可以使用removeAll()
删除所有元素。
我完全不知道你如何能够记录下来的数据。这里。但无论如何,当您向数组添加数据时,您可以保留一个计数器并将其发送到您要调用的方法。