Làm thế nào để sử dụng onResume ()?


86

Bất cứ ai có thể cho tôi một ví dụ sử dụng onResume()trong Android?

Ngoài ra, nếu tôi muốn khởi động lại hoạt động khi kết thúc quá trình thực thi một hoạt động khác, thì phương thức nào được thực thi— onCreate()hoặc onResume()?

Và nếu tôi muốn cập nhật dữ liệu, làm cách nào để đưa dữ liệu đó vào onResume()?


onResume () được gọi bất cứ khi nào bạn điều hướng trở lại hoạt động từ một cuộc gọi hoặc thứ gì đó khác. Bạn có thể ghi đè phương thức onResume tương tự như onCreate () và thực hiện tác vụ.
Jibяaᴎ Khaᴎ

Điều này có thể giúp bạn hiểu thêm về vòng đời của và ứng dụng Android.
TronicZomB

2
Trình tự mà các phương pháp này được gọi được giải thích trong tài liệu dành cho nhà phát triển Android: developer.android.com/reference/android/app/…
Michael

1
đảm bảo chọn một câu trả lời. chào mừng đến với SO.
donfede

Câu trả lời:


130

Bất kỳ Activity nào khởi động lại đều có phương thức onResume () của nó được thực thi trước.

Để sử dụng phương pháp này, hãy làm như sau:

@Override
public void onResume(){
    super.onResume();
    // put your code here...

}

72

Khởi động lại ứng dụng sẽ gọi OnCreate().

Tiếp tục ứng dụng khi nó bị tạm dừng sẽ gọi OnResume(). Từ các tài liệu chính thức tại https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle, đây là sơ đồ về vòng đời hoạt động.

vòng đời hoạt động của Android, từ https://developer.android.com/images/activity_lifecycle.png trên https://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle


1
Sử dụng liên kết siêu để cung cấp liên kết.
Manoj Fegde

liên kết đôi khi cung cấp cho tôi prob. Tôi không biết lý do tại sao
Viswanath Lekshmanan

2
Tôi không khuyên bạn nên gọi thủ công bất kỳ phương thức nào thuộc vòng đời Hoạt động :), điều này có thể gây ra nhiều vấn đề.
Cata

1
@Cata, tôi cho rằng Viswanath có nghĩa là các phương thức sẽ được gọi và tôi đã cập nhật câu trả lời cho phù hợp.
Mathieu K.

28

Cách tốt nhất để hiểu là ghi đè tất cả các phương thức Vòng đời trong hoạt động của bạn và đặt điểm ngắt (nếu kiểm tra trình giả lập) hoặc Đăng nhập mỗi phương thức trong số chúng. Bạn sẽ biết cái nào được gọi khi nào.

Cũng giống như một spoiler, onCreate()được gọi trước, sau đó nếu bạn tạm dừng hoạt động bằng cách chuyển đến màn hình chính hoặc bằng cách khởi chạy một hoạt động khác, onPause()sẽ được gọi. Nếu hệ điều hành hủy hoạt động trong thời gian chờ đợi, onDestroy()sẽ được gọi. Nếu bạn tiếp tục ứng dụng và ứng dụng đã bị phá hủy, onCreate()sẽ được gọi hoặc nếu không onResume()sẽ bị gọi.

Chỉnh sửa: Tôi quên mất onStop(), nó đã được gọi trước đây onDestroy().

Làm bài tập tôi đã đề cập và bạn sẽ hiểu rõ hơn.


1
Tôi đã tìm kiếm lời giải thích chi tiết như vậy trong một thời gian, điều này thực sự giúp tôi tạo ra chu trình hoạt động ứng dụng hoàn hảo. Cảm ơn bạn.
Keno Clayton

bạn quên onStart ()
Dory Daniel

9

Hầu hết các câu trả lời trước đây đều làm tốt công việc giải thích cách thức, lý do và khi nào sử dụng onResume()nhưng tôi muốn bổ sung thêm điều gì đó về việc tạo lại của bạn Activity.

Tôi muốn biết nếu tôi muốn khởi động lại hoạt động khi kết thúc hoạt động của một phương thức khác thì phương thức nào được thực thi onCreate () hoặc onResume ()

Câu trả lời là onCreate()Tuy nhiên, khi quyết định thực sự tạo lại nó, bạn nên tự hỏi mình Activitycần phải tạo lại bao nhiêu . Nếu đó là dữ liệu trong bộ điều hợp, chẳng hạn như một danh sách, sau đó bạn có thể gọi notifyDataChanged()hàm adapterđể tái tạo adaptervà không phải vẽ lại mọi thứ.

Ngoài ra, nếu bạn chỉ cần cập nhật một số viewsnhưng không phải tất cả sau đó nó có thể hiệu quả hơn để gọi invalidate()trên view(s) mà cần được cập nhật. Thao tác này sẽ chỉ vẽ lại những thứ đó viewsvà có thể cho phép ứng dụng của bạn chạy trơn tru hơn. Tôi hy vọng điều này có thể giúp bạn.


5

onResume()là một trong những phương thức được gọi trong suốt vòng đời hoạt động . onResume()là phần đối ứng onPause()được gọi bất cứ lúc nào một hoạt động bị ẩn khỏi chế độ xem, ví dụ: nếu bạn bắt đầu một hoạt động mới mà ẩn nó. onResume()được gọi khi hoạt động bị ẩn quay lại để xem trên màn hình.

Câu hỏi của bạn hỏi abou phương pháp nào được sử dụng để khởi động lại một hoạt động. onCreate()được gọi khi hoạt động được tạo lần đầu tiên. Trong thực tế, hầu hết các hoạt động kéo dài trong nền thông qua một loạt các onPause()onResume()các cuộc gọi. Một hoạt động chỉ thực sự được "khởi động lại" onRestart()nếu lần đầu tiên nó được dừng hoàn toàn bằng cách gọi onStop()và sau đó hoạt động trở lại. Vì vậy, nếu bạn không thực sự ngừng các hoạt động với onStop()nó thì hầu hết likley bạn sẽ sử dụng onResume().

Đọc tài liệu android trong liên kết trên để hiểu rõ hơn về mối quan hệ giữa các phương pháp lối sống khác nhau. Bất kể phương pháp vòng đời nào bạn kết thúc bằng cách sử dụng định dạng chung đều giống nhau. Bạn phải ghi đè phương thức chuẩn và bao gồm mã của mình, tức là những gì bạn muốn hoạt động thực hiện tại thời điểm đó, trong phần được nhận xét.

@Override
public void onResume(){
 //will be executed onResume
}

OnResume () có được gọi khi chúng ta nhấp vào một Mục trong dạng xem không?
rajiv_

1
Nhấp vào một mục không nhất thiết phải gọi onResume. Phương thức onResume sẽ được gọi nếu dạng xem đó bị ẩn và được khôi phục hoặc khi tải ban đầu trước khi nó được tạo hoàn toàn.
Rarw

lỗi hiển thị không gọi qua super.onResume ()
sirmagid


2

KOTLIN

Bất kỳ Activity nào khởi động lại đều có phương thức onResume () được thực thi trước.

Để sử dụng phương pháp này, hãy làm như sau:

override fun onResume() {
        super.onResume()
        // your code here
    }

1

Sau khi một hoạt động bắt đầu, khởi động lại (onRestart () xảy ra trước onStart ()) hoặc tạm dừng (onPause ()), onResume () được gọi. Khi hoạt động ở trạng thái onResume (), hoạt động đã sẵn sàng để người dùng ứng dụng sử dụng.

Tôi đã nghiên cứu vòng đời hoạt động một chút và đây là hiểu biết của tôi về chủ đề này: Nếu bạn muốn khởi động lại hoạt động (A) sau khi thực hiện một hoạt động khác, có thể có một vài trường hợp khác nhau.

  1. Hoạt động khác (B) đã bị tạm dừng và / hoặc ngừng hoặc bị phá hủy, và hoạt động A có thể đã bị tạm dừng (onPause ()), trong trường hợp này, hoạt động A sẽ gọi onResume ()

  2. Hoạt động B đã bị tạm dừng và / hoặc ngừng hoặc bị phá hủy, hoạt động A có thể đã bị dừng (onStop ()) do bộ nhớ, trong trường hợp này, hoạt động A sẽ gọi onRestart () trước tiên, onStart () thứ hai, sau đó là onResume ()

  3. Hoạt động B đã bị tạm dừng và / hoặc dừng hoặc bị hủy, hoạt động A đã bị hủy, lập trình viên có thể gọi onStart () theo cách thủ công để bắt đầu hoạt động trước, sau đó là onResume () vì khi một hoạt động ở trạng thái bị hủy thì hoạt động đó chưa bắt đầu và điều này xảy ra trước khi hoạt động bị xóa hoàn toàn. Nếu hoạt động bị xóa, hoạt động đó cần được tạo lại. Gọi thủ công onStart () Tôi nghĩ đó là bởi vì nếu hoạt động không được bắt đầu và nó được tạo, thì onStart () sẽ được gọi sau onCreate ().

Nếu bạn muốn cập nhật dữ liệu, hãy tạo một hàm cập nhật dữ liệu và đặt hàm bên trong onResume (). Hoặc đặt một hàm loadData bên trong onResume ()

Tốt hơn nên hiểu vòng đời với sự trợ giúp của biểu đồ vòng đời Hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.