在Android中逐个处理对象的最佳方式

在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)

我创建了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)
            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);
        }
    });
}