Чрезвычайно длительная задержка, прежде чем мое приложение для Android отобразит экран-заставку

#android #performance #android-studio #build #delay

#Android #Производительность #android-studio #сборка #задержка

Вопрос:

Когда я пытаюсь запустить свое приложение в эмуляторе, требуется около 4-5 секунд, пока не появится экран-заставка. Может ли кто-нибудь помочь мне сократить это время? или это исчезнет после того, как я создам приложение? я перепробовал все, но не смог найти решение. Я что-то упускаю в коде?

вот код экрана-заставки:

 package com.bigfamilydevelopers.saverforall.activity;


public class SplashScreen extends AppCompatActivity {
SplashScreen activity;
Context context;
AppUpdateManager appUpdateManager;
AppLangSessionManager appLangSessionManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash_screen);
    context = activity = this;
    appUpdateManager = AppUpdateManagerFactory.create(context);
    appLangSessionManager = new AppLangSessionManager(activity);
    UpdateApp();

    setLocale(appLangSessionManager.getLanguage());
}

@Override
protected void onResume() {
    super.onResume();
    activity = this;
    appLangSessionManager = new AppLangSessionManager(activity);

    appUpdateManager.getAppUpdateInfo().addOnSuccessListener(appUpdateInfo -> {
        if (appUpdateInfo.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS) {
            try {
                appUpdateManager.startUpdateFlowForResult(
                        appUpdateInfo, IMMEDIATE, activity, 101);
            } catch (IntentSender.SendIntentException e) {
                e.printStackTrace();
            }
        }
    });
}

public void HomeScreen() {
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent i = new Intent(SplashScreen.this, MainActivity.class);
            startActivity(i);
        }
    }, 1000);

}

public void UpdateApp() {
    try {
        Task<AppUpdateInfo> appUpdateInfoTask = appUpdateManager.getAppUpdateInfo();
        appUpdateInfoTask.addOnSuccessListener(appUpdateInfo -> {
            if (appUpdateInfo.updateAvailability() == UpdateAvailability.UPDATE_AVAILABLE
                    amp;amp; appUpdateInfo.isUpdateTypeAllowed(IMMEDIATE)) {
                try {
                    appUpdateManager.startUpdateFlowForResult(
                            appUpdateInfo, IMMEDIATE, activity, 101);
                } catch (IntentSender.SendIntentException e) {
                    e.printStackTrace();
                }
            } else {
                HomeScreen();
            }
        }).addOnFailureListener(e -> {
            e.printStackTrace();
            HomeScreen();
        });

    } catch (Exception e) {
        e.printStackTrace();
    }
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 101) {
        if (resultCode != RESULT_OK) {
            HomeScreen();
        } else {
            HomeScreen();
        }
    }
}


public void setLocale(String lang) {
    if (lang.equals("")){
        lang="en";
    }
    Locale myLocale = new Locale(lang);
    Resources res = getResources();
    DisplayMetrics dm = res.getDisplayMetrics();
    Configuration conf = res.getConfiguration();
    conf.locale = myLocale;
    res.updateConfiguration(conf, dm);



}


}
  

Комментарии:

1. ну, при запуске выполняется полная компиляция вашего проекта, по сути, он его создает, так что вполне нормально, что может быть некоторая задержка, это определенно не мгновенно

2. Я думаю, вам нужно предоставить некоторый код, тогда мы сможем сообщить вам, есть ли какие-либо проблемы, или для Android Studio нормально запускать его так долго

3. @noname Извините, вот код заставки. Пожалуйста, проверьте код и перезвоните мне.

4. код выглядит нормально, за исключением строки `context = activity = this;` бессмысленное назначение в activity, где вы можете использовать this или getApplicationContext() , когда это возможно. Я думаю, что время запуска приложения может измениться, когда вы создаете apk и устанавливаете на устройство. Также стоило бы проверить, не делает ли ваш AppUpdateManager что-нибудь дерзкое.