当前位置:主页 > 查看内容

安卓SplashActivity闪屏页面开发 kotlin

发布时间:2021-07-28 00:00| 位朋友查看

简介:项目背景 近日在项目组代码review中了解了一个小细节就是SplashActivity页面我们通常都是使用一个hander.postDelayed3秒后执行runnable,有没有考虑一下当进入闪屏页面按下home键的操作呢实验发现在某些机型下当我们进入闪屏页面按下home健手机进入到home页面……

项目背景:近日在项目组代码review中,了解了一个小细节,就是SplashActivity页面我们通常都是使用一个hander.postDelayed,3秒后执行runnable,有没有考虑一下,当进入闪屏页面,按下home键的操作呢?实验发现在某些机型下,当我们进入闪屏页面,按下home健,手机进入到home页面进行其他操作,但是过了一会儿,我们的程序会被拉起进入主页面。好了废话有点多,下面上代码解决一下这个问题。

xml中的代码就不写了,就是给父布局设置一个背景图就ok了
SplashActivity

class SplashActivity : AppCompatActivity() {
    companion object {
        private const val TAG = "SplashActivity"
    }
    private  val  handler:Handler=Handler()
    private lateinit var  runnable: Runnable
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_splash)

        runnable= Runnable {
            val intent=Intent(this,MainActivity::class.java)
            startActivity(intent)
            finish()
        }
    }

    override fun onPause() {
        super.onPause()
        Log.d(TAG, "onPause: ")
        handler.removeCallbacks(runnable)//handler删除线程

    }

    override fun onResume() {
        super.onResume()
        Log.d(TAG, "onResume: ")
        handler.postDelayed(runnable,3000)
    }
    
}

这里我需要在啰嗦一下,程序启动会执行activity生命周期,onCreate()->onResume()方法,当按下home键回到主界面,activity执行onPause(),当我们再次进入程序再次会执行onResume()。
程序启动我们在onResume方法中执行 handler.postDelayed(runnable,3000)这个延时执行的任务,我们不进行操作,程序就会理所当然的等待3秒钟进入主页面了,这里我们当我们进入SplashActivity时迅速按下home键(不要超过延时执行的时间,代码中也就是3秒)程序执行onPause()方法,这里我们使用handler.removeCallbacks(runnable)就会删除回调,所以就不会在执行runable里面的代码,也就不会出现程序又被拉起进入MianActivity了
SplashActivity通常都是全屏显示的我们需要给SplashActivity添加一个Theme

	<style name="Fullscreen" parent="Theme.WeatherMvvm">
        <item name="android:windowFullscreen">true</item>
    </style>

在AndroidManifest.xml中设置一下Theme

<activity android:name=".SplashActivity"
            android:theme="@style/Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
;原文链接:https://blog.csdn.net/glc11223344/article/details/115767385
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!
上一篇:C++ 实现一个复数类 下一篇:没有了

推荐图文


随机推荐