沉舟侧畔千帆进,病树前头万木春。这篇文章主要讲述每次从后台恢复应用程序时都会打开启动屏幕,如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指纹屏幕】我认为您想要的不是每次都打开启动屏幕,而是在应用履历上显示一些特定的屏幕。从理论上讲,不应在用户每次返回应用程序时显示初始屏幕。
您使用的方法是正确的。如果您想要一个显示图像而不是白屏的屏幕,则应通过主题来实现。
- 创建将包含您的图像的背景资源。
- 在“启动”活动主题中将此资源指定为
android:windowBackground
。 - 设置这些主题以在您的“闪屏”活动中使用。
推荐阅读
- Blackberry ListField Text Wrapping - 只有两行
- 如何使用swift获取appdelegate中的当前位置
- stringByAppendingPathComponent不可用
- 在AppDelegate类上发出SIGABRT信号
- [使用Automapper时,我是否也应该展平/映射视图模型的内部objetc()
- 15个最佳jQuery,JavaScript,CSS复选框和单选按钮替换插件
- 7个最好的jQuery和JavaScript星级评分插件
- 十大网页设计师的最佳免费图标字体
- 5个最好的Node.js的开源自托管Web Wiki应用程序