同步日志条目到服务器的发布
|
我的项目有一点问题。我正在开发适用于Android的应用程序,并希望将日志发布到服务器上。几乎一切正常,但是我有一个小问题。我的班上有一个ArrayList来处理帖子:
private ArrayList<String> logsToPost = new ArrayList<String>();
还有一种将数据放入此列表的方法,以及一个独立的线程,该线程每20秒运行一次,然后上传日志并清空列表。问题是,如果线程试图上载数据并清除列表时尝试写入此列表,则会收到ConcurrentModificationException。我的代码如下所示:
Iterator<String> keyIter = logsToPost.iterator();
while (keyIter.hasNext()) {
String next = keyIter.next();
String[] params = next.split(FormFactory.FUNCTION_SEP);
HttpData hd = HttpRequest.post(LOGCAT_LOG_URL, \"userId=\" + sb.userId + \"&pdaId=\" + sb.pdaId
+ \"&tag=\" + params[0] + \"&logContent=\" + params[1]);
logsToPost.remove(next);
}
我知道这里有一个syncedList和synced块,但是我无法让syncedList在我的机器人上工作。您有任何想法如何执行此日志记录过程?我尝试使用volatile关键字,但仍然出现异常。
没有找到相关结果
已邀请:
3 个回复
臀夯脖锑
为了进一步增强您的任务免受失败风险的影响,您应该考虑在记录任务开始时以原子方式交换ArrayList实例。因此,工作流程为:
泪琉踞檄
翁茄口霉氖
在发送循环中使用集合的副本: 迭代器keyIter = logsToUpload.iterator();