android - 如何在 onPostExecute 中确定 Activity 现在没有暂停或销毁?

标签 android android-activity android-asynctask

我启动 AsyncTask 并将 Context 放入任务的构造函数中。

On onPostExecute 我想知道我的 Activity 现在是否处于 Activity 状态并且没有重新创建。怎么做比较好?

为此我可以:

  • onCreate Activity中创建randomNumber,然后放入Application类;

  • onPause/onDestroy 将 randomNumber 设置为 0,并在 onResume 中恢复 randomNumber;

  • onPreExecute() 中获取随机数并在 onPostExecute 中将随机数与应用程序随机数进行比较。

也许我可以使用 Context 来做出决定......?

最佳答案

有很多方法可以检查 Activity 是否仍然存在。

我通常创建一个具有以下结构的SkeletonActivity:

public class SkeletonActivity extends FragmentActivity {
    private boolean paused = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        paused = false;
    }
    @Override
    public void onPause() {
        super.onPause();
        paused = true;
    }
    @Override
    public void onResume() {
        super.onResume();
        paused = false;
    }
    @Override
    public void onStart() {
        super.onStart();
        paused = false;
    }
    public boolean isPaused() {
        return paused;
    }
}

现在让您的所有 Activity 扩展此 SkeletonActivity。最后更改此基类以根据需要更改暂停标志(例如在 onDestroy()

中更新它

另一种方法是在您的 SkeletonActivity 中有一个 Context 实例:

public class SkeletonActivity extends FragmentActivity {
    private Context mContext;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mContext = this;
    }
    @Override
    protected void onDestroy() {
        mContext = null;
        super.onDestroy();
    }
    public boolean isPaused() {
        return mContext==null;
    }
}

关于android - 如何在 onPostExecute 中确定 Activity 现在没有暂停或销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10685460/

相关文章:

android - 从另一个应用程序调用服务的权限

Android 窗口标志 : Are flags set in an activty persistent throughout the entire app itself?

android - 调用 getOwnerActivity() 方法总是返回 null

android - 如何在 Espresso 上按下编辑器操作

android - Android 13 的 flutter 相机 : my app keeps crashing

android - Android下载管理器如何修改更新间隔

java - Android:如果我继续按后退按钮并再次启动应用程序,Mediaplayer 会播放多次

android - Android TabActivity 中奇怪的选项菜单行为

java - 类型为 java.lang.String 的值 yes 无法转换为 JSONObject

java - 带有适配器 ""的 ViewPager 需要 AsyncTask 中的 View id