Thông tin: Thiết bị của tôi là Nexus One với 2.2 và tôi đã thử nghiệm hai dự án, một trên 1.5 và một trên 2.1.Sự cố khi hiểu về vòng đời khi màn hình tắt và trên
Sự cố: Tôi gặp khó khăn khi hiểu vòng đời của ứng dụng khi màn hình tắt và bật.
Dưới đây là đầu ra của tôi
// activity starts
08-04 17:24:17.643: ERROR/PlayActivity(6215): onStart executes ...
08-04 17:24:17.643: ERROR/PlayActivity(6215): onResume executes ...
// screen goes off
08-04 17:24:28.943: ERROR/PlayActivity(6215): onPause executes ...
08-04 17:24:32.113: ERROR/PlayActivity(6215): onStop executes ...
08-04 17:24:32.113: ERROR/PlayActivity(6215): onDestroy executes ...
08-04 17:24:32.983: ERROR/PlayActivity(6215): onStart executes ...
08-04 17:24:32.983: ERROR/PlayActivity(6215): onResume executes ...
08-04 17:24:32.983: ERROR/PlayActivity(6215): onPause executes ...
// screen goes on
08-04 17:24:47.683: ERROR/PlayActivity(6215): onResume executes ...
// lock removed
08-04 17:24:56.943: ERROR/PlayActivity(6215): onPause executes ...
08-04 17:24:59.663: ERROR/PlayActivity(6215): onStop executes ...
08-04 17:24:59.663: ERROR/PlayActivity(6215): onDestroy executes ...
08-04 17:25:00.943: ERROR/PlayActivity(6215): onStart executes ...
08-04 17:25:00.943: ERROR/PlayActivity(6215): onResume executes ...
Tôi hoàn toàn bối rối. Tại sao khởi động lại hoạt động khi màn hình tắt? Và tại sao dừng lại và khởi động lại nó khi màn hình đã được bật và chỉ có khóa đã được gỡ bỏ?
Để đảm bảo rằng tôi không làm gì sai, tôi đã tạo một dự án mới chỉ với hoạt động này. Đầu ra là giống hệt nhau ...
public class LifeCycleTest extends Activity {
private final static String DEBUG_TAG = "FirstLifeLog";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(DEBUG_TAG, "onCreate executes ...");
setContentView(R.layout.main);
}
protected void onRestart() {
super.onRestart();
Log.e(DEBUG_TAG, "onRestart executes ...");
}
protected void onStart() {
super.onStart();
Log.e(DEBUG_TAG, "onStart executes ...");
}
protected void onResume() {
super.onResume();
Log.e(DEBUG_TAG, "onResume executes ...");
}
protected void onPause() {
super.onPause();
Log.e(DEBUG_TAG, "onPause executes ...");
}
protected void onStop() {
super.onStop();
Log.e(DEBUG_TAG, "onStop executes ...");
}
protected void onDestroy() {
super.onDestroy();
Log.e(DEBUG_TAG, "onDestroy executes ...");
}
}
Có ai có ý tưởng không?
Cập nhật từ ngày hôm nay (không hiểu tại sao nó cư xử không giống như lần trước, có lẽ tài nguyên miễn phí hơn?)
// activity starts
08-09 12:14:03.122: ERROR/FirstLifeLog(15406): onCreate executes ...
08-09 12:14:03.132: ERROR/FirstLifeLog(15406): onStart executes ...
08-09 12:14:03.132: ERROR/FirstLifeLog(15406): onResume executes ...
// screen off
08-09 12:14:07.412: ERROR/FirstLifeLog(15406): onPause executes ...
// screen on
08-09 12:14:11.722: ERROR/FirstLifeLog(15406): onResume executes ...
// no log for removed screen lock
Điều kỳ lạ là tôi thấy các cuộc gọi onDestroy(), onStart(), onResume() nhưng tôi không thấy bất kỳ cuộc gọi onCreate() nào. Tôi cũng quan tâm đến việc hiểu hành vi. –
Thats vì onCreate của tôi đã bỏ lỡ bản ghi nhật ký ... Ngoài ra tôi đã thử lại ngày hôm nay ... bây giờ trò chơi của tôi có hành vi tương tự, nhưng thử nghiệm có hành vi mong đợi (xem cập nhật) – WarrenFaith