0

我正在尝试从 AsyncTask 的 onpostexecute 启动一项活动。如果在执行 AsyncTask 时应用程序进入后台,则 Activity 将被推送到手机的启动器屏幕。这是由于 AsyncTask 的默认行为。有没有办法避免这种行为?

4

2 回答 2

1

当您的活动将不再对用户可见(按下主页按钮等)时,onPause()将调用其方法。

@Override
public void onPause() {
    super.onPause();
    if (myAsyncTask != null) {
        myAsyncTask.Cancel(true); // allow task to be interrupted if in progress
    }
}

这是假设您在 Activity 中有对 AsyncTask 的引用。如果您发布代码,我将能够更好地提供解决方案。

于 2013-04-05T04:24:22.117 回答
0

使用这个方法:

(如果活动不在前台,则在 run() 中编写的代码将不会执行。在您的情况下是意图)

    @Override
    protected void onPostExecute(String result) {

        super.onPostExecute(result);

        if(null!=getActivity())
        {
            getActivity().runOnUiThread(new Runnable() {

                @Override
                public void run() {

            });
        }
    }

已编辑- [注意:我在片段中使用它。因此它的getActivity()。如果您在活动中编写了 AsyncTask,请将 getActivity() 替换为 YourActivityName.this]

于 2013-04-05T04:23:58.100 回答