AsyncTask和Activity怎么做

时间:2012-01-15 19:45:09

标签: android android-asynctask

我的主要应用程序执行此操作:它从互联网上检索数据并有3个按钮,当OnClicked时,我将去其他3个屏幕。因为数据加载可能有点慢,我想使用异步任务。这是我的asynctask示例代码。

class LoginProgressTask extends AsyncTask {
        @Override
        protected Boolean doInBackground(String... params) {
            try {
                Thread.sleep(4000);  // Do your real work here
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return Boolean.TRUE;   // Return your real result here
        }

        @Override
        protected void onPreExecute() {
            showDialog(AUTHORIZING_DIALOG);
        }

        @Override
        protected void onPostExecute(Boolean result) {
            // result is the value returned from doInBackground
            removeDialog(AUTHORIZING_DIALOG);
        }
}

这是我的主要活动样本:

public class MainScreen extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MainTheme();
    }
    public void MainTheme(){
         retrieve_data(); //function for getting the data
         ... action with the buttons, onClicks Listener
    }
}

我的问题是如何在One活动中混合使用这些代码才能使其正常工作,因为我还没有理解AsyncTask。或者我应该在doInBackground中返回什么?

3 个答案:

答案 0 :(得分:1)

我是从>>中学到的AsynTask链接。也许它对你有帮助,首先阅读整个例子然后开始在你的代码上应用它。

答案 1 :(得分:0)

您可以使用Service代替AsyncTaskThis会帮助你。

答案 2 :(得分:0)

例如,如果您要登录Button,则应该执行以下操作:

Button button; //Here button to go other sreen
public void onCreate(){
  //some business code here
  //notice: you have declare you button to your layout. I don't post it, but maybe you know how to
  button.setOnClickListener(new OnClickListener){
    @Override
    public void onClick(View view){
        LoginProcessTask loginTask = new LoginProcessTask(this);
        login.excute(data of param1);
    }
  }
}

你应该注意到,在你的LoginProcessTask中,你错误地扩展了它。它必须(仅举例):

class LoginProgressTask extends AsyncTask<String, Integer, Integer>{ ......}