Я пытаюсь регистрировать задержку запуска моего приложения. Они делают это, устанавливая время запуска приложения на Application.onCreate
и предоставляя общедоступный метод, который возвращает время.
MyApplication extends Application {
Date startUpTime;
//Declare variables
@Override
public void onCreate() {
super.onCreate();
setStartupTime();
//other initializations
}
private void setStartUpTime() {
startUpTime = new Date();
}
public Date getStartUpTime() {
return startUpTime;
}
}
MyActivity extends Activity {
.
.
.
@Override
public void onStart(){
logStartUpLatency();
//other onStart stuff
}
private void logStartUpLatency() {
Date currentTime = new Date();
Date startTime = (MyApplication)getApplicationContext().getStartUpTime();
long latency = currentTime.getTime() - startTIme.getTime();
Log.d("Start up Latency is ", Long.toString(latency)):
}
Вот как я тестирую задержку запуска:
- adb install myapk
- запустите приложение, чтобы получить первую задержку запуска. Я могу видеть, что задержка запустилась правильно для первого запуска.
- снова запустите приложение, чтобы проверить начальную задержку. Записанная латентность верна для начала (или любого количества последующих запусков).
- Теперь я увеличиваю код своей версии приложения и имя на 1. Чтобы имитировать обновление, я использовал команду adb install -r myapk.
- Теперь я снова запустил приложение, чтобы проверить начальную задержку после обновления, хотя это занимает 3 секунды, задержка задержек отключена от диаграмм.
Кто-нибудь знает, почему это может случиться?
Обновление
Поэтому, если я устанавливаю apk, используя "adb install -r myapk", приложение не проходит через Myapplication.onCreate()
.