启动应用程序时出现白屏的原因是什么?如何完全避免呢?

加朱·科勒(Gaju Kollur)

我有一个简单的应用程序,其中我正在使用openssl进行一些加密。但启动应用程序后出现白屏超过5秒钟。

这是我的礼物:

apply plugin: 'com.android.application'

android {
    signingConfigs {
        config {
            keyAlias 'manvish'
            keyPassword 'manvish'
            storeFile file('/home/manvish/Android/debug.keystore')
            storePassword 'manvish'
        }
    }

        compileSdkVersion 25
        buildToolsVersion '26.0.2'
        defaultConfig {
            applicationId "com.example.manvish.bwssb"
            minSdkVersion 19
            targetSdkVersion 25
            versionCode 1
            versionName "1.0"
            vectorDrawables.useSupportLibrary = true

        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
        }



    android {
        packagingOptions {
            exclude 'META-INF/DEPENDENCIES.txt'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/NOTICE.txt'
            exclude 'META-INF/NOTICE'
            exclude 'META-INF/LICENSE'
            exclude 'META-INF/DEPENDENCIES'
            exclude 'META-INF/notice.txt'
            exclude 'META-INF/license.txt'
            exclude 'META-INF/dependencies.txt'
            exclude 'META-INF/LGPL2.1'
        }


    }

    android {
        defaultConfig {

                ndk {
                    moduleName "myLibrary"
                    ldLibs "log"
                }

        }
        externalNativeBuild {
            ndkBuild {
                path 'src/main/jni/Android.mk'
            }
        }


    }

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:support-vector-drawable:25.3.1'

    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:design:25.3.1'
    testCompile 'junit:junit:4.12'
    compile files('libs/MorphoSmart_SDK_6.13.2.0-4.1.jar')

    //    compile 'com.google.android.gms:play-services-location:11.0.4'

    //    compile 'com.google.android.gms:play-services-maps:11.0.4'
    compile files('libs/commons-io-2.4.jar')
    compile('org.apache.httpcomponents:httpmime:4.3') {
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'
    }
    compile('org.apache.httpcomponents:httpcore:4.4.1') {
        exclude group: 'org.apache.httpcomponents', module: 'httpclient'

    }

}

看看Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := ssl_static
LOCAL_SRC_FILES := precompiled/libssl.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := crypto_static
LOCAL_SRC_FILES :=precompiled/libcrypto.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := myLibrary
TARGET_PLATFORM := android-3
LOCAL_SRC_FILES := native-lib.cpp
LOCAL_C_INCLUDES = $(LOCAL_PATH)/include
LOCAL_STATIC_LIBRARIES := ssl_static crypto_static
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)

我没有白屏背后的原因,一些SO答案建议在主题中使用此:

<item name="android:windowDisablePreview">true</item>

但是我不想用这个 这不是一个合适的解决方案,因为它可以避免出现白屏,但加载应用程序的延迟仍然相同。请帮助解决此问题。

阿迪亚(Aditya S.)

启动应用程序时白屏是什么?

启动我们的应用程序时出现白屏,然后每个应用程序都必须放在手机内存中才能正常工作。在应用程序中,将它的工作组件存储在内存中,Android OS显示为白色屏幕,或者我们可以说是冷启动。这就是为什么如果手机内存不足的用户打开应用程序,则白屏显示的时间更长,因为应用程序正在等待将其组件放入内存(即RAM)正常工作。

如何解决冷启动?

基本上,冷启动时间取决于某些参数。那是,

1)用户手机中可用的存储空间

2)放置在MainThreadMainActivity重载组件(即Launcher Activity)

现在解决方案

作为开发人员,我们无法对冷启动的第一个参数做任何事情,因为我们无法强迫用户每次打开我们的应用程序时都清除内存。但是,我们可以优化我们的应用程序,使其在低内存或高内存的每种类型的设备上都能表现更好。

减少冷启动时间的优化

简而言之,如果您在应用程序中使用繁重的视图组件,或者在MainThread上进行繁重的网络工作或执行任何类似的工作,这都会导致LauncherActivity的渲染时间受阻或增加。然后,您必须在后台执行此操作,或者简单地先渲染通用组件,然后在后台加载完整视图。

现在,关于移除白屏

首先想到的是,您无法删除白屏。但是您可以通过两种使用方式替换它,

<style name = "AppTheme">
     <item name ="android:windowBackground">@color/black</item>
</style>

因此,如果您不想AppTheme着色,则可以使用上述方法设置自定义颜色。或者,您也可以将白屏替换为AppThemeprimaryColor,onCreate()方法是将其放置在您的活动方法中,

@Override
protected void onCreate(Bundle savedInstanceState) {
    setTheme(R.style.AppTheme);   //it will shows the default color from your apptheme in place of white screen, you can also define your theme in style
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_cart);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Oreo在OnePlus 5中启动我的Sencha应用程序时,仅出现白屏

启动离子应用程序时显示空白白屏

当我在用户界面样本项目中运行Notifications应用程序时,导致“ java.lang.NullPointerException”错误的原因是什么?

在Flask应用程序中提交表单时,错误请求错误的原因是什么?

cordova 通过 https 提供应用程序的原因是什么?

将某些应用程序绑定到GNOME的原因是什么?

给定的Spring Rest应用程序中406不可接受的原因是什么?

我的应用程序在 android 6.0 以下崩溃的原因是什么?

我的控制台应用程序以代码0退出的原因是什么?

IONIC应用程序中启动屏幕后出现白屏

如何防止在启动应用程序时出现启动画面?

在此Codeigniter 3应用程序中更新用户密码失败的原因是什么?

未为安全性配置应用程序时,可能的原因是调用https

创建守护程序时执行双叉的原因是什么?

为什么在Yosemite 10.10中启动应用程序时,NSStatusBar的文本会立即出现并消失?

将本地主机站点转换为应用程序时出现空白屏幕

在 Android 上启动应用程序时出现几秒钟的空白屏幕(没有可用的半透明主题)

启动 E4 应用程序时出现 ClassNotFoundException

退出应用程序时出现启动画面活动

启动我的应用程序时出现错误消息

启动应用程序时出现警告[Windows Automation]

启动 Web 应用程序时出现 Groovy 异常

启动应用程序时出现致命异常

启动JNLP Java应用程序时出现ejbAccessException

启动快速应用程序时出现错误消息

是什么原因要禁用CSRF春季启动Web应用程序?

是什么使“便携式应用程序”分类呢?

启动Android应用程序时如何启动服务?

测试android应用程序时无法更改某些手机上的图标。可能是什么原因?