Tôi đang cố gắng ghi thời gian chờ khởi động của ứng dụng. Cách họ đang làm là đặt thời gian bắt đầu của ứng dụng theo số Application.onCreate
và cung cấp phương thức công khai trả về thời gian.Android - Sự cố khi ghi thời gian chờ khởi động
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)):
}
Đây là cách tôi đang thử nghiệm bắt đầu của tôi lên thời gian chờ:
- adb cài đặt myapk
- chạy các ứng dụng để có được khởi động độ trễ đầu tiên. Tôi có thể thấy độ trễ được ghi lại là chính xác cho lần khởi động đầu tiên
- chạy lại ứng dụng để kiểm tra độ trễ bắt đầu. Độ trễ được ghi là chính xác cho đầu (hoặc bất kỳ số lần bắt đầu nào sau đó)
- Bây giờ tôi tăng mã và tên phiên bản của ứng dụng lên 1. Để mô phỏng nâng cấp, tôi đã sử dụng lệnh adb install -r myapk.
- Bây giờ tôi chạy lại ứng dụng để kiểm tra độ trễ bắt đầu đầu tiên sau khi nâng cấp, mặc dù phải mất 3 giây, thời gian chờ được ghi lại không nằm trong biểu đồ.
Có ai biết tại sao điều đó có thể xảy ra không?
Cập nhật
Vì vậy, nếu tôi cài đặt gói ứng dụng sử dụng "adb cài đặt myapk -r", ứng dụng sẽ không qua Myapplication.onCreate()
.