在Android中逐个处理对象的最佳方式
我创建了ArrayList的一个子类:在Android中逐个处理对象的最佳方式,android,arraylist,android-asynctask,task,Android,Arraylist,Android Asynctask,Task,我创建了ArrayList的一个子类: public class ProcessQueue<E> extends ArrayList<E> { private OnItemAdded mListener; @Override public boolean add(E object) { boolean result = super.add(object); if (mListener != null)
public class ProcessQueue<E> extends ArrayList<E> {
private OnItemAdded mListener;
@Override
public boolean add(E object) {
boolean result = super.add(object);
if (mListener != null)
mListener.onItemAdded(object);
return result;
}
@Override
public void add(int index, E object) {
super.add(index, object);
if (mListener != null)
mListener.onItemAdded(object);
}
public void setOnItemAddedListener(OnItemAdded listener) {
mListener = listener;
}
public interface OnItemAdded {
public void onItemAdded(Object object);
}
}
我执行以下操作将项目添加到processqueue列表中:
for (int i=0;i<3;i++) {
mProcessItem.add(String.valueOf(i));
}
for(int i=0;i您的意思是要在一个单独的线程上运行调用ProcessTask.execute,一次一个,同时不使用UI线程吗?不确定我是否正确理解您的意思,但如果这就是您的意思,那么您可以使用在自己的线程上运行的处理程序,并为每个任务向处理程序发布可运行的
像这样初始化线程,但只对应用程序执行一次。您不希望每次启动某些活动时都创建一个新线程
HandlerThread ht = new HandlerThread("foo");
ht.start();
Handler processHandler = new Handler(ht.getLooper());
然后在线程上执行任务:
@Override
public void onItemAdded(final Object object) {
processHandler.post(new Runnable() {
@Override
public void run() {
new ProcessTask().execute((String) object);
}
});
}
@Override
public void onItemAdded(final Object object) {
processHandler.post(new Runnable() {
@Override
public void run() {
new ProcessTask().execute((String) object);
}
});
}