【问题标题】:use two asynctask and replace the first with the second activity使用两个异步任务并将第一个替换为第二个活动
【发布时间】:2016-05-29 11:29:36
【问题描述】:

类活动和splash.class。在第一个(执行主程序)中,有异步任务(它将被调用多次)检索数据。第二个活动是一个启动屏幕,它会一直运行到数据下载完毕。

public class splash extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash_screen);
    startHeavyProcessing();

}

private void startHeavyProcessing(){
    new LongOperation().execute("");
}

private class LongOperation extends AsyncTask<String, String, String> {
    Intent i = new Intent(splash.this, MainActivity.class);

    @Override
    protected String doInBackground(String... params) {
        startActivity(i);

        return "";
    }


    protected void onPostExecute(String result) {

    }

    protected void onPreExecute() {

    }

    protected void onProgressUpdate() {}
}
}

我想在 MainActivity 完成检索其 doInBackground 中的数据时完成 spalash 活动。完成后,我将只运行 MainActivity。

【问题讨论】:

  • 在调用onPostExecute 方法中调用splash.this.finish() 以完成splash 并在调用splash.this.finish() 之前调用startActivity(i); 而不是startActivity ,而不是startActivity
  • 我会建议你把所有东西都放在启动活动中,在启动活动中处理所有事情。

标签: java android android-asynctask


【解决方案1】:

试试这个!

private class LongOperation extends AsyncTask<String, String, String> {


@Override
protected String doInBackground(String... params) {

    return "";
}


protected void onPostExecute(String result) {

if(result != null){
}
 Intent i = new Intent(splash.this, MainActivity.class);
 startActivity(i);
}else {
Log.e("DOWNLOAD ERRO");
}

protected void onPreExecute() {

}

protected void onProgressUpdate() {}
}

【讨论】:

    最近更新 更多