带有半透明闪屏的 Android 崩溃

Posted

技术标签:

【中文标题】带有半透明闪屏的 Android 崩溃【英文标题】:Android crash with translucent splash screen 【发布时间】:2017-04-04 21:04:21 【问题描述】:

我试图在应用程序启动时实际启动屏幕之前删除系统白色启动。 我关注这个主题:How To fix white screen on app Start up? 并为启动活动创建了半透明样式:

<style name="Splash" parent="@android:style/Theme.Translucent">
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="android:windowFullscreen">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowDisablePreview">true</item>
    </style>

但在安装后首次启动时,应用程序崩溃并出现以下未处理的异常:

E/AndroidRuntime: FATAL EXCEPTION: main
                                                                Process: ru.perekrestok.app, PID: 13791
                                                                java.lang.IllegalArgumentException: reportSizeConfigurations: ActivityRecord not found for: Token5b77a38 null
                                                                    at android.os.Parcel.readException(Parcel.java:1687)
                                                                    at android.os.Parcel.readException(Parcel.java:1636)
                                                                    at android.app.ActivityManagerProxy.reportSizeConfigurations(ActivityManagerNative.java:6844)
                                                                    at android.app.ActivityThread.reportSizeConfigurations(ActivityThread.java:2768)
                                                                    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2711)
                                                                    at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
                                                                    at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                    at android.os.Looper.loop(Looper.java:154)
                                                                    at android.app.ActivityThread.main(ActivityThread.java:6077)
                                                                    at java.lang.reflect.Method.invoke(Native Method)
                                                                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

第一次启动后应用程序正常启动。我可以修复这种行为吗?如果这很重要,我正在使用最新的 android 支持库

【问题讨论】:

发布您的主要活动代码 我试图注释掉除 setContentView 之外的所有内容,但结果相同:pastebin.com/CNj5ABJP @wingear 你能解决这个问题吗? @PravinSonawane 不,我必须恢复到非半透明的启动屏幕 【参考方案1】:

使用此更改清单中的活动条目。这将删除白色飞溅(因为主题是半透明的)并且您的实际飞溅将可见。

<activity
    android:name=".SplashActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

【讨论】:

Unable to start activity ComponentInfomyapp.app.screens.SplashActivity: java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. 也许有这个主题的 AppCompat 类似物 你能分享你的启动活动吗? @wingear 我认为您正在使用 ActionBarActivity 或类似的方式来扩展您的活动,并且只有在使用 AppCompatActivity 进行扩展时才能使用此主题 我正在使用 appcompat 活动,所以,也许,这就是原因。我今天将发布活动代码

以上是关于带有半透明闪屏的 Android 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

Android 5.0 半透明状态栏

Android - 如何设置半透明布局?

利用 Android 4.4 KitKat 中的半透明状态栏

利用 Android 4.4 KitKat 中的半透明状态栏

Android 半透明状态栏但非半透明导航栏(如果存在)

Android:半透明覆盖?