gpt4 book ai didi

android - 动态设置android :noHistory attribute

转载 作者:行者123 更新时间:2023-11-29 21:04:46 30 4
gpt4 key购买 nike

我进退两难。我正在开发一个显示欢迎页面并要求用户注册或登录的应用程序。用户可以通过向上插入符号按钮和电话的后退按钮从注册/登录 Activity 到主要 Activity (欢迎页面)。

但是一旦用户登录或创建帐户,我希望从应用程序堆栈中删除主要 Activity (欢迎页面)和之前的 Activity (可以是登录 Activity 或注册 Activity ),这样当用户点击后退按钮,他们将退出应用程序,而不是返回到他们来自的 Activity (登录或注册)。我无法在 AndroidManifest 中设置 android:noHistory="true" 注册和登录 Activity ,因为这也意味着从该特定 Activity 退出应用程序回到欢迎页面。那么,如何在到达特定 Activity 时动态地为这些 Activity 设置 noHistory 标志?或者也许我想到的应用程序流程有问题。感谢您的帮助,谢谢!

最佳答案

我建议您使用广播接收器关闭不需要的 Activity 。我将在此处概述步骤:-

  1. 创建一个 Acitvity,用作悬挂 Acitivies 的父类(super class)。他们将收听自定义广播消息并在收到消息时调用 finish()。

    public class LoginFinisherActivity extends Activity {
    private FinishReceiver finishReceiver;
    public static final String ACTION_FINISH_LOGIN = "ACTION_FINISH_LOGIN";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    finishReceiver= new FinishReceiver();
    registerReceiver(finishReceiver, new IntentFilter(ACTION_FINISH_LOGIN));
    }

    @Override
    protected void onDestroy() {
    super.onDestroy();
    unregisterReceiver(finishReceiver);
    }

    private final class FinishReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(ACTION_FINISH_LOGIN))
    finish();
    }
    }
    }
  2. 任何您不希望悬空的类都应该扩展 LoginFinisherActivity

  3. 当您知道自己不再需要这些 Activity 时,通过发送广播来摆脱它们(例如在其他 Activity 的 onCreate() 中):sendBroadcast(新 Intent (LoginFinisherActivity.ACTION_FINISH_LOGIN));

总结一下:在您的场景中基本上有两类 Activity - 您想要清理的早期 Activity - 我们称它们为“注册” Activity 和您在完成上一个流程时登陆的 Activity (此可能只是您应用程序中的单个 Activity ?)-我们称它们为“着陆” Activity 。因此,您需要做的就是让所有“注册” Activity 扩展 LoginFinisherActivity 和所有“登陆” Activity 以调用 sendBroadcast(new Intent(LoginFinisherActivity.ACTION_FINISH_LOGIN)); 在他们的 onCreate() 中。

我希望这对你有用!

关于android - 动态设置android :noHistory attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24922975/

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