Android的AsyncTask的例子和说明 [英] Android AsyncTask example and explanation

查看:85
本文介绍了Android的AsyncTask的例子和说明的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用的AsyncTask 在我的应用程序,但我无法找到一个code段与事物是如何工作的一个简单的解释。我只是想要的东西帮我拿回去的速度很快,而不必涉水通过文档或大量的Q&放大器;至于一次。

I want to use an AsyncTask in my app but I am having trouble finding a code snippet with a simple explanation of how things work. I just want something to help me get get back up to speed quickly without having to wade through the documentation or lots of Q&As again.

推荐答案

下面是一个骨骼code与说明概要:

Code:

Here is a skeletal code outline with explanations:

public class AsyncTaskTestActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);  

        // This starts the AsyncTask
        // Doesn't need to be in onCreate()
        new MyTask().execute("my string paramater");
    }

    // Here is the AsyncTask class:
    //
    // AsyncTask<Params, Progress, Result>.
    //    Params – the type (Object/primitive) you pass to the AsyncTask from .execute() 
    //    Progress – the type that gets passed to onProgressUpdate()
    //    Result – the type returns from doInBackground()
    // Any of them can be String, Integer, Void, etc. 

    private class MyTask extends AsyncTask<String, Integer, String> {

        // Runs in UI before background thread is called
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            // Do something like display a progress bar
        }

        // This is run in a background thread
        @Override
        protected String doInBackground(String... params) {
            // get the string from params, which is an array
            String myString = params[0];

            // Do something that takes a long time, for example:
            for (int i = 0; i <= 100; i++) {

                // Do things

                // Call this to update your progress
                publishProgress(i);
            }

            return "this string is passed to onPostExecute";
        }

        // This is called from background thread but runs in UI
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);

            // Do things like update the progress bar
        }

        // This runs in UI when background thread finishes
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            // Do things like hide the progress bar or change a TextView
        }
    }
}

流图:

下面是用于帮助说明,所有的参数和类型会:

Flow Diagram:

Here is a diagram to help explain where all the parameters and types are going:

  • What arguments are passed into AsyncTask<arg1, arg2, arg3>?
  • Slidenerd Android AsyncTask Tutorial: Android Tutorial For Beginners
  • Android: Why, When and How to use AsyncTask with example
  • Understanding AsyncTask – Once and Forever
  • Dealing with AsyncTask and Screen Orientation
  • How to pass multiple parameters to AsynkTask
  • how to pass in two different data types to AsyncTask, Android

这篇关于Android的AsyncTask的例子和说明的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆