Java 在哪里放置AsyncTask(),以便调用它来加载映像?

Java 在哪里放置AsyncTask(),以便调用它来加载映像?,java,android,android-asynctask,Java,Android,Android Asynctask,下面是我的编码,它将在调用此活动时加载图像。但我希望在progressDialog从服务器检索图像时显示它,而不仅仅是显示给用户的黑屏。我听说AsyncTask可以做到,但我一直坚持在哪里放置AsyncTask函数并调用它 public class LargeImageScroller extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta

下面是我的编码,它将在调用此活动时加载图像。但我希望在progressDialog从服务器检索图像时显示它,而不仅仅是显示给用户的黑屏。我听说AsyncTask可以做到,但我一直坚持在哪里放置AsyncTask函数并调用它

public class LargeImageScroller extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new SampleView(this));
    }

    private static class SampleView extends View {
        private static Bitmap bmLargeImage; //bitmap large enough to be scrolled
        private static Rect displayRect = null; //rect we display to
        private Rect scrollRect = null; //rect we scroll over our bitmap with
        private int scrollRectX = 0; //current left location of scroll rect
        private int scrollRectY = 0; //current top location of scroll rect
        private float scrollByX = 0; //x amount to scroll by
        private float scrollByY = 0; //y amount to scroll by
        private float startX = 0; //track x from one ACTION_MOVE to the next
        private float startY = 0; //track y from one ACTION_MOVE to the next

        public SampleView(Context context) {
            super(context);

            displayRect = new Rect(0, 0, displayWidth, displayHeight);

            scrollRect = new Rect(0, 0, displayWidth, displayHeight);

            bmLargeImage = Bitmap.createBitmap(1035 , 665, Config.ARGB_8888);             
            bmLargeImage = createMap(this.getContext());

        }

        public boolean onTouchEvent(MotionEvent event) {....}

        protected void onDraw(Canvas canvas) {....}

        private static Bitmap createMap(Context context) {...}          

        private static Drawable LoadImageFromWebOperations(String url) {....}

        private static Bitmap decodeFile(File f, int requiredSize) {...}

    }
}

我想知道AsyncTask函数应该放在哪里,以便在程序从服务器/缓存加载映像时显示progressDialog。我在互联网上找到的大部分信息都没有说太多。

AsyncTask在某种程度上就像一个线程。它用于处理一些耗时的操作,以便主线程不会被阻塞。 在您的情况下,AsyncTask是合适的。然而,你想把它放在哪里取决于你的逻辑

请阅读SDK:以获取更多信息。还有一个代码片段可以帮助您

增加:


我理解你的担心。如果您只想显示一个进度条,告诉用户应用程序正在从服务器下载图像。您可以这样处理:
1.创建包含ProgressBar的xml布局文件。
2.在OnCreate In Class LargeImageScroller中,调用
setContentView(R.layout.that_layout)
以显示进度条,并启动异步任务以下载图像。
3.在AsyncTask内部,重写onProgressUpdate(Integer…progress)以告知进度栏加载进度。
4.在AsyncTask内部,重写onPostExecute(长结果)。异步任务完成时将调用此方法。在这里,您可以执行以下操作:S
ampleView sv=new SampleView(this)
,然后将图像传递给sv对象。然后调用
setContentView(sv)
显示图像


这正是我的思路。我认为您可以在LargeImageScroller类或SampleView类中使用AsyncTask。希望我的评论能有所帮助。

正如您在代码中看到的,我调用SampleView类来显示图像,而这正是我不确定在何处包含用于异步任务的类的时候。我应该包括在整个LargeImageScroller类中,在LargeImageScroller类之外,在SampleView类内部。好吧,我理解你的担心。如果您只想显示一个进度条,告诉用户应用程序正在从服务器下载图像。您可以这样处理: