Tôi đã bắt gặp 2 loại khác nhau để hoạt động của tôi chạy dựa trên một số thông số. Người đầu tiên là savedInstanceState và thứ hai là getIntent.getExtras()savedInstanceState vs getIntent(). GetExtras()
Q1) Vì vậy, những gì tôi không hiểu là, một khi tôi vượt qua bó để hoạt động của tôi và sau đó bắt đầu nó, nó nên có gói. Nhưng, nếu vì một lý do nào đó hoạt động được tái tạo lại, nó sẽ có cùng một gói lại. (Tôi có quyền không?)
Q2) Dựa trên thực tế Q1 là đúng và thực tế là tôi không thể ghi đè lên gói khi hoạt động đã bắt đầu, tôi đoán rằng nếu vì lý do nào đó của tôi đã bắt đầu Hoạt động, tôi muốn thay đổi một số thông số của gói, tôi nên tạo một số trường hoạt động và sử dụng các trường đó trong cuộc sống hoạt động của mình. Và ghi đè saveInstanseState để lưu các trường mới nếu từ một số lý do hoạt động của tôi sẽ được tạo lại. nó có đúng không
Q3) Căn cứ vào thực tế là tất cả ở trên là đúng sự thật, trong onCreate() mọi hoạt động trong thế giới của Android nên cần phải bắt đầu như thế này:
if (savedInstanceState != null) {
mType = savedInstanceState.getInt("some_val1");
mCardId = savedInstanceState.getLong("some_val2");
mQuery = savedInstanceState.getString("some_val3");
mCategory = savedInstanceState.getLong("some_val4");;
} else {
mType = getIntent().getExtras().getInt("some_val1");
mCardId = getIntent().getExtras().getLong("some_val2");
mQuery = getIntent().getExtras().getString("some_val3");
mCategory = getIntent().getExtras().getString("some_val4");
}
Q4) Giả onSaveInstanceState được gọi và lưu các giá trị khác với gói ban đầu đã bắt đầu hoạt động (getIntent.getExtras), Nếu hoạt động được tái tạo lại, điều này có nghĩa là saveInstanceState khác với getIntent.getExtras() hoặc chúng bây giờ giống nhau không? (Nếu chúng giống nhau, thì if/else trên đoạn mã trên không có ý nghĩa thực sự, vì nó giống nhau!).
Q5) Nếu tôi không ghi đè lên onSaveInstanceState nhưng khi tôi tạo ra hoạt động này tôi vượt qua nó một Bundle, hiện nay vẫn còn có nghĩa là tôi có thể nhận được gói ban đầu của tôi nếu hoạt động tái tạo một lần nữa? (tôi đoán câu hỏi này sẽ tự trả lời dựa trên các câu trả lời khác)