Android在preExecute中启动一个活动,并在运行异步任务期间在postExecute中完成它

时间:2016-07-31 13:48:13

标签: android android-asynctask

我想为某些异步任务指定一个活动作为我的应用的加载活动。

它将在preExecute期间启动,并将在postExecute中完成该怎么做?

           @Override
            protected  void onPreExecute()
            {
                startActivity(new Intent(SearchActivity.this,LoadingActivity.class));
            }
            @Override
            protected void onPostExecute(String result)
            {
               // i want to finish loading activity here.
            }

1 个答案:

答案 0 :(得分:4)

这不是Android的运作方式。

一次只有一个活动活动,当你启动AsyncTask时,你会在当前活动的上下文中这样做。

因此,虽然您在技术上可以从AsyncTask启动活动,但它的父上下文(启动AsyncTask的Activity)将变为非活动状态。 AsyncTask将继续运行(这实际上是AsyncTasks的一个大问题),但可能会崩溃 - 即使没有,行为也将是未定义的。

Shubham Nandanwar的回答看起来应该有效,但不是解决这个问题的正确方法。您应该重新考虑您在活动及其生命周期应该如何工作的环境中尝试做的事情。

我建议只需启动您想要的Activity,然后在该活动中使用AsyncTask来完成需要完成的任何工作,并在完成工作后从活动本身完成活动。

更好的是,找到一种更好的方法来进行后台处理(例如RxJava),并取消AsyncTask。