我有一个扩展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,以便将图像加载到主线程的单独线程上。谁能告诉我有更好的做事方式吗?
答案 0 :(得分:1)
这里有关于Android多线程的非常好的帖子。应该给你一些关于做什么的提示。
http://android-developers.blogspot.com/2010/07/multithreading-for-performance.html