项目背景:近日在项目组代码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>
本文转载自微信公众号「后端技术指南针」,作者指南针氪金入口。转载本文请联系...
话不多说,请看实例代码 !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transiti...
《STM32从零开始学习历程》 EnzoReventon SPI物理层及FLASH芯片介绍 相关链接 SP...
准备工作 一般分页查询 使用子查询优化 使用 id 限定优化 使用临时表优化 关于数...
本文实例讲述了php多进程并发编程防止出现僵尸进程的方法。分享给大家供大家参考...
本文实例为大家分享了vuex实现购物车功能的具体代码,供大家参考,具体内容如下 ...
目录 一、下载 二、VsCode安装 三、VsCode配置 一、下载 Visual Studio Code htt...
Rudra Saraswat今天宣布发布Ubuntu Unity Remix 20.04.2,这是Ubuntu Unity Remi...
主要内容 Safari调试 swift/OC与JS互调 增加加载进度条 支持JS中alert、confirm...
当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地...