安卓启动页的最佳实践

作者: remax1 | 来源:发表于2020-06-08 09:47 被阅读0次

前言

在很多APP启动时,都会先启动一个启动页,在这里我们会做一些逻辑处理,譬如说判断登录状态,再或者说我想做个延时加载,看到这里,可能有人就要问了,启动页还有延时加载这一说?我们先呆着问题先去简单实现一个启动页。

一般我们都会这么做

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
}

但是实际上我们只需要展示一张图片就够了,然后跳转到主界面,无需这个XML文件其实。

一般做法

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                SystemClock.sleep(3000);
                //之前登录过,直接进入主界面
                if ((Boolean) AppSharePreferenceMgr.get(getApplicationContext(), Constans.LOGIN_SUCCESS, false)){
                    startActivity(new Intent(getApplicationContext(), MainActivity.class));
                }else {
                    startActivity(new Intent(getApplicationContext(),LoginActivity.class));
                }
            }
        });

可以看到没有调用setContentView()了,这样做会节约很多加载视图的时间。再让线程休眠几秒钟,来做一个类似启动准备的效果。但是这里的背景图片去哪里了呢?我们接着往下看。

第二步:AndroidManifast文件设置主题

<activity android:name=".activity.LunchActivity"
            android:launchMode="singleTop"
            android:theme="@style/LunchTheme"
            >

然后在这个自定义主题主题里面把启动页图片放进去

style name="LunchTheme" parent="Theme.AppCompat">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowBackground">@drawable/ic_logo</item>
</style>

划重点

思考一下,为什么要线程休眠3秒,我休眠1秒不行吗? 这个启动页效果 ,到底该休眠几秒。
请看下面的代码:

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if ((Boolean) AppSharePreferenceMgr.get(getApplicationContext(), Constans.LOGIN_SUCCESS, false)){
            startActivity(new Intent(getApplicationContext(), MainActivity.class));
        }else {
            startActivity(new Intent(getApplicationContext(),LoginActivity.class));
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        finish();
    }

为什么要这么写,这跟activity的生命周期有关。请看从A启动B 的生命周期如何走。


图片.png

看这张图,似乎应该在onStop()里去做finish(),其实不然,在系统内存不足的时候可能不会执行onStop()方法。但是onPause一定会走到,且在B 初始化工作准备好后,才会走onPause(),这样就避免了白屏的发生。

相关文章

  • 安卓启动页的最佳实践

    前言 在很多APP启动时,都会先启动一个启动页,在这里我们会做一些逻辑处理,譬如说判断登录状态,再或者说我想做个延...

  • 安卓启动画面的最佳实践

    (忽略调试黑框) 这是debug模式下的冷启动画面,实际启动要快得多,基本上一闪而过。 附Gif制作技巧: 参考 ...

  • 安卓网络请求最佳实践

    安卓网络请求最佳实践 在安卓开发中,经过多年的发展,网络请求的架构基本定型,通常是 OkHttp + Retrof...

  • Android:启动页--最佳实践

    一、前言 Android 开发过程中启动页是必不可少的,但是我们经常会看到启动打开后是先白屏或者黑屏,然后才会显示...

  • flutter 启动页设置(Android端)

    flutter 启动页设置(Android端) 针对安卓端,flutter每次启动都有一个白色或者黑色的页面,用户...

  • dcloud应用和安卓应用互调并传递参数

    以下是webAPP启动安卓应用和获取安卓应用传递过来的参数 webAPP启动安卓APK并传递参数 请看: 接收安卓...

  • RN 添加启动页(安卓)

    可能自动安装会出现各种问题,这里推荐手动安装,可以比较清晰的知道是哪出了问题 1.安装yarn add react...

  • Flutter—SomeTips01

    1:修改flutter 在iOS和安卓中的,icon,启动页,名字: iOS:Xcode 打开Runer 修改pl...

  • React-Native App启动页制作(安卓端)

    原文地址:React-Native App启动页制作(安卓端) 这篇文章是根据开源项目react-native-...

  • React Native真机运行篇

    启动项目 打开终端,cd到项目目录,输入指令启动项目 安卓真机运行 1.连接安卓手机 1)打开安卓手机的开发者模式...

网友评论

    本文标题:安卓启动页的最佳实践

    本文链接:https://www.haomeiwen.com/subject/azzgzhtx.html