每次从后台恢复应用程序时都会打开启动屏幕,如WhatsApp指纹屏幕
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每次从后台恢复应用程序时都会打开启动屏幕,如WhatsApp指纹屏幕相关的知识,希望对你有一定的参考价值。
我想打开一个包含图像的屏幕,当我恢复应用程序时,我想显示该屏幕。但是问题是,恢复应用程序时,它首先显示白屏。
如何删除该白色屏幕并每次都像WhatsApp屏幕一样打开?
这是我的应用程序类别
class App : Application() {
private var context: Context? = null
override 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 = 0
override fun onActivityStarted(activity: Activity?) {
if (numStarted == 0) {
println("AppLifecycleTracker Foreground")
if (App.sinltonPojo?.launchData == 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
中过渡到其他活动的逻辑。
我希望有帮助。
我认为您想要的不是每次都打开启动屏幕,而是在应用履历上显示一些特定的屏幕。从理论上讲,不应在用户每次返回应用程序时显示初始屏幕。
您使用的方法是正确的。如果您想要一个显示图像而不是白屏的屏幕,则应通过主题来实现。
- 创建将包含您的图像的背景资源。
- 在“启动”活动主题中将此资源指定为
android:windowBackground
。 - 设置这些主题以在您的“闪屏”活动中使用。
有关此详细信息,请检查此article。
以上是关于每次从后台恢复应用程序时都会打开启动屏幕,如WhatsApp指纹屏幕的主要内容,如果未能解决你的问题,请参考以下文章
每次我的应用程序从后台进入前台时,IOS Default.png 都会显示 [重复]
试图学习如何用 python 制作一个不和谐的机器人。每次我尝试启动代码时都会出现相同的错误
在 Vuejs 中使用 beforemount 进行数据渲染,每次打开该组件/页面时都会不断增加渲染的数据列表
每次 3d 游戏套件项目启动时都会出现 14 个错误 [关闭]