【问题标题】:App halts on black screen before splash screen when app starts应用程序启动时,应用程序在启动屏幕之前在黑屏上停止
【发布时间】:2021-09-18 22:24:20
【问题描述】:

当我第二次尝试打开应用程序时,它会在启动画面之前加载且不加载启动画面的黑屏上停止 我搜索过的链接 blank screen comes before splash

public class SplashActivity extends AppCompatActivity {

SharedPrefs prefs;
ImageView ivSplashLogo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Crashlytics crashlyticsKit = new Crashlytics.Builder()
            .core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build())
            .build();

    Fabric.with(this, crashlyticsKit);

    Window window = getWindow();
    WindowManager.LayoutParams winParams = window.getAttributes();
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        winParams.flags &= ~WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
    }
    window.setAttributes(winParams);
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

    setContentView(R.layout.activity_splash);

    prefs = new SharedPrefs(this);
    prefs.setCount(0);
    ivSplashLogo = findViewById(R.id.iv_splash_logo);
    latestVersionRequest();
}

我的 gradle 文件是:

android {
compileSdkVersion 28
buildToolsVersion '28.0.3'

defaultConfig {
    minSdkVersion 17
    targetSdkVersion 28
    multiDexEnabled true
    versionCode 61
    versionName "1.0.61"
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

packagingOptions {
    exclude 'META-INF/DEPENDENCIES'
    exclude 'META-INF/NOTICE'
    exclude 'META-INF/LICENSE'
    exclude 'META-INF/LICENSE.txt'
    exclude 'META-INF/NOTICE.txt'
    exclude 'META-INF/ASL2.0'
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

allprojects {
    repositories {
        maven { url "https://jitpack.io" }


    }
}

这里是 style.xml 文件

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:popupMenuStyle">@style/PopupMenu</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
    <item name="android:textColorSecondary">@color/colorAccent</item>
    <item name="colorControlHighlight">@color/light_grey</item>
    <item name="windowActionModeOverlay">true</item>
    <item name="android:actionMenuTextColor">@color/colorAccent</item>
    <item name="android:actionModeBackground">@color/colorPrimary</item>

    <item name="android:windowAnimationStyle">@null</item>
    <item name="android:windowDisablePreview">true</item>
    <item name="android:windowBackground">@drawable/splash_logo</item>

</style>

<style name="KidsTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorRed</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>


<style name="MyAlertDialogStyle" parent="Theme.AppCompat.Dialog.Alert">
    <!-- Used for the buttons -->
    <item name="colorAccent">#ea7c29</item>
    <!-- Used for the title and text -->
    <item name="android:textColorPrimary">#FFFFFF</item>
    <!-- Used for the background -->
    <item name="android:background">@color/darkColorPrimary</item>
</style>

<style name="tolbar.title" parent="@style/Base.TextAppearance.AppCompat.Title">
    <item name="android:textSize">16sp</item>
    <item name="android:textStyle">bold</item>
</style>

<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/solid_black</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:itemBackground">@color/black</item>

</style>

<style name="BitrateMenu" parent="@android:style/Widget.PopupMenu">
    <item name="android:textColor">@android:color/white</item>
    <item name="android:itemBackground">@color/black</item>
    <item name="android:textSize">14sp</item>
    <item name="android:listPreferredItemHeightSmall">25dp</item>

</style>


<style name="KidsPopupMenu" parent="@android:style/Widget.PopupMenu">
    <item name="android:textColor">@android:color/black</item>
    <item name="android:itemBackground">@color/white</item>

</style>

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />

<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
    <item name="color">@color/colorAccent</item>
</style>


<style name="MyDarkToolbarStyle" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:colorBackground">@color/black</item>
    <item name="android:textColorSecondary">@color/colorAccent</item>
    <item name="android:textColor">@color/white</item>
</style>


<style name="AlertDialogCustom" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:textColor">@color/colorPrimary</item>
</style>

<style name="SelectableItemTheme">
    <item name="colorControlHighlight">@color/colorAccent</item>
</style>

<style name="SelectableItemThemeWhite">
    <item name="colorControlHighlight">@color/white</item>
</style>

<style name="SelectableItemBackground">
    <item name="android:theme">@style/SelectableItemTheme</item>
    <item name="android:background">?attr/selectableItemBackgroundBorderless</item>
</style>

<style name="SelectableItemBackgroundWhite">
    <item name="android:theme">@style/SelectableItemThemeWhite</item>
    <item name="android:background">?attr/selectableItemBackgroundBorderless</item>
</style>

<style name="OverrideMultipleImageSelectTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="actionModeStyle">@style/OverrideCustomActionModeStyle</item>
    <item name="windowActionModeOverlay">true</item>
</style>

<style name="OverrideCustomActionModeStyle" parent="Base.Widget.AppCompat.ActionMode">
    <item name="background">@color/colorPrimary</item>
</style>

<style name="DialogAnimation">
    <item name="android:windowEnterAnimation">@anim/slide_up</item>
    <item name="android:windowExitAnimation">@anim/slide_bottom</item>
</style>


<style name="AppLoginTheme" parent="Theme.AccountKit">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

在logcat中没有显示任何错误

【问题讨论】:

  • 我更喜欢创建 Application 类,然后将 firebase 初始化放在 Application onCreate 方法中,然后它不会在启动画面上加载
  • 感谢您的回答,但它根本不加载启动活动,尽管启动活动是我的启动器活动,而是在显示一秒钟的黑屏上停止(在其他应用程序中)。
  • 可以放manifest文件吗
  • 谢谢。但问题已解决,是 facebook sdk 导致了问题。现在解决了。

标签: android


【解决方案1】:

当您使用 AppCompatActivity 时,您必须为您的活动使用正确的主题,该主题在 android 清单文件中定义。对于我的应用程序,我使用的是以下主题,它工作正常而不会在启动时显示黑屏

 <style name="Theme.AppCompat.Light.NoActionBar.FullScreen"
parent="@android:style/Theme.Black.NoTitleBar">
 <item name="windowNoTitle">true</item>
 <item name="windowActionBar">false</item>
 <item name="android:windowFullscreen">true</item>
 <item name="android:windowContentOverlay">@null</item>
 <item name="android:windowIsTranslucent">true</item>

更多详情可以查看here

【讨论】:

    【解决方案2】:

    无法从代码中复制此类问题,但我建议您使用以下技巧:-

    • 将 Splash 作为启动器活动
    • 几秒钟后使用 Handler 从启动活动导航到另一个活动
    • 将 Intent 标志用作 SINGLE_TOP 和 SINGLE_INSTANCE

    【讨论】:

    • 感谢您的回答,但我的意思是它不会加载启动画面,它会在显示一秒钟的黑屏上停止(在其他应用程序中)。
    【解决方案3】:

    有多种解决方案

    1.&lt;item name="android:windowAnimationStyle"&gt;@null&lt;/item&gt;把它放到你的Activity样式中

    1. &lt;item name="android:windowDisablePreview"&gt;true&lt;/item&gt; 把它放在你的 Activity 样式中

    2. &lt;item name="android:windowBackground"&gt;@drawable/slash_screen&lt;/item&gt; 把它放在你的 Activity 样式中

    3. android:theme="@android:style/Theme.Translucent"

    编辑

     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:popupMenuStyle">@style/PopupMenu</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
    <item name="android:textColorSecondary">@color/colorAccent</item>
    <item name="colorControlHighlight">@color/light_grey</item>
    <item name="windowActionModeOverlay">true</item>
    <item name="android:actionMenuTextColor">@color/colorAccent</item>
    <item name="android:actionModeBackground">@color/colorPrimary</item>
    
     <item name="android:windowDisablePreview">true</item>
    </style>
    

    在你的风格中使用它并尝试

     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);   setContentView(R.layout.activity_splash);
    
        prefs = new SharedPrefs(this);
        prefs.setCount(0);
        ivSplashLogo = findViewById(R.id.iv_splash_logo);
        latestVersionRequest();
    }
    

    用您的 oncreate 替换此代码

    希望对你有帮助

    【讨论】:

    • 你能发布你的样式文件吗
    • 我添加了样式文件并更新了我的问题...请检查
    • setContentView(R.layout.activity_splash);将此行移到 super.onCreate(savedInstanceState); 之后
    • 我试过了,我也放了日志。但它不会加载启动活动。如果我卸载该应用程序并重新安装它。它将第一次完美运行。但是在关闭它并第二次打开应用程序后会出现此问题。
    • 请检查 oncreate 方法并替换为您的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多