2016-01-15 7 views
3

У меня есть приложение для Android, которому необходимо отправить данные на сервер после достижения определенного предела памяти. Я проверяю внутреннюю память слева -Извлечение данных из ArrayList

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 изначально составляет 800 МБ. У меня есть ArrayList объектов, которые продолжают добавлять элементы каждые 10 секунд. Когда мой доступный MB станет 700 МБ, я хочу, чтобы мои данные в ArrayList были отправлены на сервер.

Я хотел бы знать, что, когда Доступный MB становится 700MB-

а), как извлекать данные из ArrayList с 0-й позиции, пока текущее положение (положение, при котором Доступен MB становится 700MB) и отправить все сразу.

б) После отправки очистить ArrayList и начать хранения новых данных, пока Доступный MB становится 600MB

ответ

1

При добавлении данных в ArrayList вы можете сохранить счетчик. И когда вы вызываете метод, чтобы узнать, если вы коснулись 700 мб, вы можете отправить этот счет в качестве параметра.

Вы можете вызвать метод подсписка ArrayList

int to = 4; 
int from = 0; 
al.subList(from, to); 

Вы можете использовать removeAll(), чтобы удалить все элементы.

Я точно не знаю, как вы можете вести счет «здесь». Но в любом случае, когда вы добавляете данные в массив, вы можете сохранить счетчик и отправить его методу, который вы хотите вызвать.

+0

Как я узнаю позицию inIndex в подписок – FAZ

+0

Когда вы добавляете данные в arraylist, вы можете сохранить счет. И когда вы вызываете метод, чтобы узнать, если вы коснулись 700 мб, вы можете отправить этот счет в качестве параметра. Имеет ли это смысл ? –

Смежные вопросы