【问题标题】:How to completely destroy an activity from code?如何从代码中完全销毁活动?
【发布时间】:2020-10-17 04:29:35
【问题描述】:

我正在使用 java 在 android 中构建药物提醒应用程序。用户可以设置一个或多个提醒,并根据这些提醒将得到通知吃药。

问题是,每当生成通知时,用户点击它并打开接收器活动时,会为用户提供两种选择,要么吃药,要么不吃药。现在,我已经确保在这两种情况下,活动都将完成并且也调用了它的 onDestroy() 方法。我的目标是防止该活动出现在最近的应用列表中,使用户不能重复服用或跳过药物。

这是详细信息(如果有任何帮助,链接都指向应用程序的屏幕截图):

通知来了,用户点击通知,提醒接收活动打开

用户服用或跳过药物,活动结束。

但该活动仍显示在最近的应用列表中,如果点击它,它会再次打开提醒接收活动,用户可以再次执行相同的操作

我想防止这种特殊行为发生。

这是我尝试过的东西(我有一个片段,在活动之上运行):

  1. 从片段完成活动,然后在其上调用 onDestroy()
ReminderRecieveActivity activity = (ReminderRecieveActivity) requireActivity();
activity.finish();
activity.onDestroy();

  1. 像这样修改activity的onDestroy()方法
    @Override
    protected void onDestroy() {
        super.onDestroy();
        int id= android.os.Process.myPid();
        android.os.Process.killProcess(id);
        System.exit(0);
    }

但问题依旧,请帮忙。

【问题讨论】:

  • 为什么不使用android:noHistory="true"android:excludeFromRecents="true" 创建一个单独的活动?您不必终止该进程即可。
  • 如果您想要一个替代方案,您可以使用 AlertDialog。 developer.android.com/guide/topics/ui/dialogs
  • 嗨@EpicPandaForce,您的解决方案运行良好,您能否发布一个答案以便我可以接受?
  • 好的,我会这样做的

标签: java android android-studio android-activity android-ondestroy


【解决方案1】:

为什么不使用 android:noHistory="true" 和 android:excludeFromRecents="true" 创建一个单独的 Activity?您不必终止进程即可执行此操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-20
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 2012-01-14
    相关资源
    最近更新 更多