#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
что-нибудь дерзкое.