【问题标题】:App Splash Screen Takes Time After Clearing Cache Data清除缓存数据后应用程序启动画面需要一些时间
【发布时间】:2017-12-11 10:24:21
【问题描述】:

我是 Android 应用程序开发的新手。从设置中清除应用程序数据后,我的启动画面需要 19 秒才能加载。 当应用程序启动时,启动画面需要 5 秒。我不知道为什么需要时间 下面是我的android AndroidManifest 文件代码:

   <activity android:name=".activity.SplashActivity"
            android:screenOrientation="portrait"
            android:theme="@style/SplashTheme"
            >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

我的Splash Activity如下

public class SplashActivity extends AppCompatActivity {

public final int SPLASH_DISPLAY_LENGTH=1000;

@Override
protected void onCreate(Bundle savedInstanceState) {
   setTheme(R.style.SplashTheme);
   super.onCreate(savedInstanceState);
   // setContentView(R.layout.activity_splash);

    new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {
            /* Create an Intent that will start the Menu-Activity. */
            Intent mainIntent = new Intent(SplashActivity.this,MainActivity.class);
            startActivity(mainIntent);
            finish();
        }
    }, SPLASH_DISPLAY_LENGTH);
}
}

我的 Splash 主题如下:

<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="android:windowDisablePreview">true</item>
    <item name="android:windowBackground">@drawable/splash_screen_drawable</item>
</style>

我的启动画面绘制如下:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@color/icons"

        />

    <item
        android:left="65dp"
        android:right="65dp">
        <bitmap
            android:gravity="center"
            android:src="@drawable/placeholder_splash"

             />

    </item>
    <item android:drawable="@android:color/transparent"></item>
</layer-list>

【问题讨论】:

  • 是第一次还是每次启动应用程序时发生?
  • 查看我的回答希望这能解决您的问题。
  • 你在 Application.onCreate() 中做了什么特别的事情吗?

标签: android splash-screen


【解决方案1】:
public class SplashActivity extends AppCompatActivity {    
@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setTheme(R.style.SplashTheme);      

 Thread th = new Thread() {
            @Override
            public void run() {
                try {
                    sleep(1000);
                    Intent i = new Intent(getBaseContext(), MainActivity.class);
                    startActivity(i);                      
                    finish();
                } catch (Exception e) {

                }
            }
        };
        th.start();
}
}

【讨论】:

  • .activity.SplashActivity: +959ms I/ActivityManager: 显示 com.ct.linkcardapp/.activity.Home: +474ms (总共 +884ms) I/ActivityManager: 显示 com.android.settings/。 applications.ManageApplicationsActivity: +349ms I/ActivityManager: 显示 com.android.settings/.applications.InstalledAppDetailsTop: +328ms 07-07 13:43:53.599 1630-1690/? I/ActivityManager: 显示 com.ct.linkcardapp/.activity.SplashActivity: +18s926ms 07-07 13:43:55.105 1630-1690/? I/ActivityManager: 显示 com.ct.linkcardapp/.activity.MainActivity: +713ms
  • 再次安装需要 19 秒的闪屏。在应用启动时
  • 你的意思是说从 SplashScreen 打开应用程序而不是 mainActivity 需要 19 秒
  • 加载启动画面的开始时间是 19 秒,从 SplashScreen 到 MainActivity 不是
【解决方案2】:

问题在于 Instant Run 功能需要太多时间来加载应用程序,只需禁用该功能即可。

对于 Windows:文件 → 设置 → 构建、执行、部署 → 即时 运行并取消选中启用即时运行。

对于 Mac:Android Studio → 首选项 → 构建、执行、部署 → 即时 运行并取消选中启用即时运行。

请参阅下面的屏幕截图并取消选中这两个选项。之后卸载应用程序,然后再次运行项目。

【讨论】:

    猜你喜欢
    • 2020-04-23
    • 2018-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-04
    • 2023-01-31
    • 2016-07-12
    • 2018-07-29
    相关资源
    最近更新 更多