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