gpt4 book ai didi

android - 一个应用程序有两个独立的 Activity

转载 作者:搜寻专家 更新时间:2023-11-01 09:03:14 26 4
gpt4 key购买 nike

我正在开发只有两个 Activity 的简单应用程序。

  • Activity C 配置应用
  • Activity A 用于在某些事件发生时与用户进行交互

用户不可能从一个 Activity 导航到另一个 Activity - 这就是我称它们为独立 Activity 的原因。此外,更多 Activity A 仅在表单事件中被调用,用户无法手动执行此操作。

问题。让我们假设应用程序已正确配置。系统中发生了一些事件,因此应用程序 A 正在显示给用户。用户与之交互, Activity 进入后台。然后用户决定启动配置 Activity C。向用户显示 Activity C。用户使用后退按钮“关闭” Activity ,但用户看到的不是 android 启动器或桌面,而是 Activity A(取自历史记录)。

类似的情况可能会以另一种方式发生。 C 正在被用户使用,然后进入后台。某些事件显示 Activity A,用户使用后退按钮转到 C 而不是关闭 Activity A。

我已经解决了这个问题,但是这个解决方案很脏。是否有解决此类问题的干净标准方法?

我的部分解决方案包括一个答案中的建议:

来自 AndroidManifest.xml 的 fragment :

<activity
android:name=".C"
android:clearTaskOnLaunch="true"
android:excludeFromRecents="false"
android:launchMode="singleTask"
...
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:exported="false"
android:name=".A"
android:excludeFromRecents="true"
android:noHistory="true"
android:launchMode="singleInstance"
android:clearTaskOnLaunch="true"
....
>
</activity>

Activity A 的 fragment :

public boolean onKeyUp(final int p_keyCode, final KeyEvent p_event) {
switch(p_keyCode) {
case KeyEvent.KEYCODE_ENDCALL:
case KeyEvent.KEYCODE_HOME:
case KeyEvent.KEYCODE_BACK:
case KeyEvent.KEYCODE_MUTE:
case KeyEvent.KEYCODE_POWER:
this.finish();
break;
....
}
return super.onKeyUp(p_keyCode, p_event);
}

从事件处理程序中截取:

public class H extends BroadcastReceiver {
...
Intent intent = new Intent(p_context, A.class);
intent.addFlags(Intent.FLAG_FROM_BACKGROUND);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_USER_ACTION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
p_context.startActivity(intent);
...
}

它适用于我的应用程序。但是我希望应用程序( Activity C)出现在最近应用程序中。但是一旦 Activity A 被调用,应用程序就会从最近中删除。

最佳答案

我不知道这是否是最简洁的方法,但您可以覆盖 void onBackPressed() Activity 方法。通过这种方式,您可以像这样手动将 Activity 移至后台,并防止之前的 Activity 弹出:

public void onBackPressed () {
moveTaskToBack (true);
}

编辑:事实证明有更好的方法来做到这一点:

打开您的 AndroidManifest.xml,并在每个声明中放入以下内容:`android:noHistory="true"``。这样做会告诉 Android 您的 Activity 没有留下历史记录,因此,当用户返回时,Android 将退出应用程序,因为没有其他 Activity 可以返回。

关于android - 一个应用程序有两个独立的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13701353/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com