我开始开发一个需要用户每次登录的应用程序。
主要是我想知道用户何时单击我的应用程序图标并启动它,这样我就可以启动登录活动,而不是他上次使用该应用程序时打开的活动。
谢谢 :)
嗯,这个问题还有其他一些问题,比如你为什么要这样做?再次为用户和系统工作方式提供一致的交互。
消除所有这些,就我而言,唯一的方法是使用 startActity 在所有活动的所有 onResume 中将用户带到登录屏幕。
According to android documentation, you can acheive that via manifest.xml file. by setting android:clearTaskOnLaunch="true" for your activity node in your manifest.
say your activity name is MainActivity then your manifest.xml should look like this:
.....
<activity android:name=".MainActivity"
android:clearTaskOnLaunch="true"
.....
您需要使用LifecycleObserver。从这里你可以知道你的应用程序什么时候进入后台,什么时候你的应用程序进入前台,无论你在哪个活动中。因为它正在观察应用程序的生命周期。因此,当应用程序进入前台时,您需要启动 LoginActivity,以便它将位于您的应用程序之上,并且用户必须像银行应用程序一样登录。
对于 LifecycleObserver,您需要使用以下代码行在应用程序类的 onCreate() 方法中注册。
ProcessLifecycleOwner.get().lifecycle.addObserver(appLifecycleObserver)
为上述对象创建 AppLifecycleObserver 类 (appLifecycleObserver)
class AppLifecycleObserver(val context: Context) : LifecycleObserver {
/**
* Call when your app come to foreground
*/
@OnLifecycleEvent(Lifecycle.Event.ON_START)
internal fun onEnterForeground() {
//goto login activity
}
/**
* Call when your app go to background
*/
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
internal fun onEnterBackground() {
}
}
需要依赖等级:
implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-rc01'
我认为您现在可以通过覆盖活动上的 onpause 方法并保存用户上次在共享首选项中留下的状态
您可以在此处查看有关活动生命周期的更多信息 -> http://developer.android.com/reference/android/app/Activity.html
这是活动生命周期图
我希望我的回答对您有所帮助,但如果您对我的回答还有其他问题,请随时在评论中提问:)