我有一个欢迎活动,仅当用户未登录时才会显示。 我要做的是通过意图开始一项新的活动。 (我检查是否有用户登录,然后开始活动)。但是,有一瞬间,在重定向之前此活动仍然可见。有办法避免这种情况吗?
答案 0 :(得分:0)
只需使用相同的Activity
,然后对Fragment
进行充气,结果:零延迟。
这也可以通过方法.setContentView()
和两个XML布局来完成。
没有必要显示它,而用户却无所事事...
根据经验:跳过所有无用的复杂性(如其他建议)。
答案 1 :(得分:0)
我认为使用共享首选项来检查用户登录是否先登录,然后共享首选项值为true,并在每次启动后检查共享首选项。
注意:打开活动应为开始活动,如果为false,请检查开始活动中的用户,然后重定向欢迎屏幕。
例如应该会对你有帮助
https://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/
答案 2 :(得分:0)
我说使用启动画面。将用户数据保存为共享首选项,然后在打开活动中进行检查。这应该是一个空白活动,仅包含共享的首选项代码,而xml中没有任何内容,可能只是一个空白的布局或空格,但是应该使用style
,其中android:windowBackground
是您的初始屏幕徽标。加载活动时,窗口背景有点像占位符。这样,总会有一个没有滞后的启动画面徽标。进行检查后,将用户定向到登录活动或家庭活动。离开前,请不要忘记finish();
这项活动。
样式:
<style name="splash" parent="AppTheme.NoActionBar">
<item name="android:windowBackground">@drawable/splash_wallpaper</item>
</style>
在清单中应用主题:
<activity
android:name=".activities.SplashActivity"
android:theme="@style/splash">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
由于splash_wallpaper
在不同的屏幕上可能看起来有所不同,因此请使用可绘制的xml来定义其引力。
splash_wallpaper.xml:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:gravity="fill"
android:src="@drawable/loading"/>
</item>
</layer-list>