在Android中创建登录屏幕/活动的正确方法是什么?

bin*_*inW 56 android login android-activity

我正在开发一个Android应用程序,需要用户在执行任何其他操作之前登录.目前我已创建名为LoginScreen的主Activity,并且在成功登录后,此活动将启动另一个名为Home的Activity.但我发现这种方法存在问题.如果用户在Home活动中按下按钮怎么办?我不希望用户返回登录屏幕.什么是阻止用户这样做的正确方法.我需要处理按键事件吗?

bin*_*inW 51

我最终做的是让我的Home活动处理意图android.intent.action.MAIN.家庭活动在启动时会检查用户是否已登录(使用共享首选项),如果不是,则启动LoginActivity并在其自身上调用finish().

成功登录后的LoginActivity启动Main活动,这次因为用户已登录,Main活动将继续其正常过程.LoginActivity在清单文件中声明如下:

<activity android:name="LoginScreen" android:label="@string/app_name"
    android:noHistory="true" android:excludeFromRecents="true">
</activity>
Run Code Online (Sandbox Code Playgroud)

将LoginHctivity的noHistory和excludeFromRecents设置为true意味着用户无法使用后退按钮返回此活动.

  • 在LoginActivity再次启动Home之后,为什么不立即`完成()LoginActivity,就像你在Home活动中那样?为什么`android:noHistory`在这里更好? (5认同)
  • noHistory的一个问题是,一旦将下一个活动添加到堆栈,noHistory活动就可能被破坏.(很可能就在那时.)当用户点击后退按钮时,活动不仅会被跳过......它会被先发制人地摧毁.因此,如果您的登录活动有隐私政策或其他可能会推送到后台的其他内容,您的登录页面可能会消失. (2认同)

Jas*_*son 22

在调用startActivity(...)LoginScreen活动后,请致电finish().这将从活动堆栈中删除该活动,因此一旦您进入Home活动,按下该按钮将基本上关闭您的应用程序.