gpt4 book ai didi

android - onPostExecute 在异步任务的 doInBackground 之前执行

转载 作者:行者123 更新时间:2023-11-30 03:46:49 24 4
gpt4 key购买 nike

找了半天,翻了下面的链接,明白了,

http://developer.android.com/reference/android/os/AsyncTask.html#cancel(boolean)

AsyncTask never executes onPostExecute

但我想对服务器进行一些 API 访问,在获取所有数据后,我想从 Splashscreen 移动到我的 mainactivity,下面是我的代码。 . . .

class Startsyntask extends AsyncTask<Void, Void, Void> 
{

@Override
protected Void doInBackground(Void... arg0)
{
raw_data = new File(Environment.getExternalStorageDirectory() + "/.MyFoldernew");
if(raw_data.exists())
{
Log.e("directory exists", " already ");
new read_syntask().execute();
}
else
{
Log.e("directory created", " newly ");
raw_data.mkdirs();
new write_syntask().execute();
}
return null;
}

@Override
protected void onPostExecute(Void unused)
{
if( i == 6)
{
finish();
startActivity(new Intent("com.sample.app.Tabbar"));
}
}
}

在代码中,read_synctaskwrite_synctask 是另一个异步任务,有一些特定的操作要做,在这些异步任务中,它在 doinBackground 之后调用 onPostexecute。

实际上它移动到 Tabbar Activity 并且 API 命中继续并且我在 Tabbar Activity 中从服务器读取数据。只有在完成 doinBackground 中的异步任务后,才应该调用 onProgress 才能实现它。

最佳答案

其实,

new read_syntask().execute();

new write_syntask().execute();

两者都有异步调用,它不会等待完成任务并执行下一个执行步骤,因此您的执行会在完成这两个操作之前到达onPostExecute() 异步任务

你要做的是,

使用 new read_syntask().execute().get();new write_syntask().execute().get();

现在 AsyncTaskget() 方法将等待 AsyncTask 完成,然后 onPostExecute() 将执行。 (但我认为它会阻塞 UI 线程)。

更新:(最佳方法)

其实不需要StartsyntaskAsyncTask,可以直接在Activity的方法中写raw_dataif-else条件,也可以用于启动 Tabbar

的代码
finish();
startActivity(new Intent("com.sample.app.Tabbar"));

应该在 read_syntaskwrite_syntaskonPostExecute() 中。

关于android - onPostExecute 在异步任务的 doInBackground 之前执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14869347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com