每次从后台恢复应用程序时都会打开启动屏幕,如WhatsApp指纹屏幕

沉舟侧畔千帆进,病树前头万木春。这篇文章主要讲述每次从后台恢复应用程序时都会打开启动屏幕,如WhatsApp指纹屏幕相关的知识,希望能为你提供帮助。
我想打开一个包含图像的屏幕,当我恢复应用程序时,我想显示该屏幕。但是问题是,恢复应用程序时,它首先显示白屏。
如何删除该白色屏幕并每次都像WhatsApp屏幕一样打开?
这是我的应用程序类别

class App : Application() { private var context: Context? = nulloverride fun onCreate() { super.onCreate() context = this registerActivityLifecycleCallbacks(AppLifecycleTracker()) }companion object { @SuppressLint("StaticFieldLeak") private val instance: App? = null fun getContext(): App? { return instance } }

AppLifecycleTracker
class AppLifecycleTracker : Application.ActivityLifecycleCallbacks { override fun onActivityPaused(activity: Activity) { println("AppLifecycleTracker onActivityPaused") }override fun onActivityDestroyed(activity: Activity) { println("AppLifecycleTracker onActivityDestroyed") }override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) { println("AppLifecycleTracker onActivitySaveInstanceState") }override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { println("AppLifecycleTracker onActivityCreated") }override fun onActivityResumed(activity: Activity) { println("AppLifecycleTracker onActivityResumed ${activity}") }private var numStarted = 0override fun onActivityStarted(activity: Activity?) { if (numStarted == 0) { println("AppLifecycleTracker Foreground") if (App.sinltonPojo?.launchData =https://www.songbingjia.com/android/= 1) { activity?.startActivity(Intent(activity.application, GifViewActivity::class.java)) activity?.overridePendingTransition(R.anim.enter, R.anim.exit) } }numStarted++ }override fun onActivityStopped(activity: Activity?) { numStarted-- if (numStarted == 0) { // app went to background } } }

答案一种方法是在活动finish(); 中呼叫onStop()。这样,您的应用将在下次重新打开启动器活动。
另一答案实际上有很多方法可以做到这一点。您可以考虑以下内容。
而不是从Application类注册生命周期回调,我认为您可能将SplashActivity作为启动程序活动,并在android:noHistory="true"中将AndroidManifest.xml用于所有其他活动。
< activity android:noHistory="true" android:label="@string/app_name" android:name=".activities.SplashActivity"> < intent-filter> < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> < /intent-filter> < /activity> < activity android:noHistory="true" android:name=".activities.MainActivity" />

这样,您可以在每次SplashActivity从后台恢复时启动它,并且可以具有在SplashActivity中过渡到其他活动的逻辑。
我希望有帮助。
另一答案【每次从后台恢复应用程序时都会打开启动屏幕,如WhatsApp指纹屏幕】我认为您想要的不是每次都打开启动屏幕,而是在应用履历上显示一些特定的屏幕。从理论上讲,不应在用户每次返回应用程序时显示初始屏幕。
您使用的方法是正确的。如果您想要一个显示图像而不是白屏的屏幕,则应通过主题来实现。
  1. 创建将包含您的图像的背景资源。
  2. 在“启动”活动主题中将此资源指定为android:windowBackground
  3. 设置这些主题以在您的“闪屏”活动中使用。
有关此详细信息,请检查此article。

    推荐阅读