在android中使用多线程加载图像

时间:2011-10-16 08:38:14

标签: android multithreading

我有一个扩展Activity的类,并且在其中有一个扩展View的私有类,我调用它来加载图像。但是,我不是应该使用AsyncTask,Handler或其他方法在后台执行图像加载并在加载时同时显示progressBar。对于AsyncTask,必须在UI线程上创建任务实例(我假设它在Activity类中)。但是所有函数都在View类中,并且在使用AsyncTask时遇到了麻烦。使用Handler是一个不错的选择吗?

public class LargeImageScroller extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(new SampleView(this));
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {...}

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {...}

    private static class SampleView extends View {

        public SampleView(Context context) {...}
        public boolean onTouchEvent(MotionEvent event) {...}
        protected void onDraw(Canvas canvas) {...}
        private boolean createMap(Context context) {...}
}

这是该计划的粗略骨架。 createMap()是我将图像加载到画布中以显示图像的功能。但是如果我声明一个扩展AsyncTask的类,那么任务实例只能在onCreate()中创建,而不能在其他任何地方创建,所以我在调用createMap()来加载图像时遇到问题。我正在考虑使用Handler,以便将图像加载到主线程的单独线程上。谁能告诉我有更好的做事方式吗?

1 个答案:

答案 0 :(得分:1)

这里有关于Android多线程的非常好的帖子。应该给你一些关于做什么的提示。

http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html