2012-02-10 36 views
5

Bằng tài liệu, "onPause" được gọi, khi:tại sao "onPause" không được gọi trong tình huống sau?

khi hệ thống sắp bắt đầu hoạt động trước đó.

So với "onStop", sự khác biệt là:

Được gọi là khi hoạt động là không còn hiển thị cho người sử dụng, bởi vì hoạt động khác đã được nối lại và được bao phủ thế này.

Nhưng khi tôi nhấn và giữ phím HW-Home và "ứng dụng gần đây" hiển thị, "onPause" không được gọi.

Tại thời điểm này, tôi không còn có thể tương tác với hoạt động gốc, nhưng vẫn hiển thị.

Tôi bị nhầm lẫn bởi tình huống này. Hãy giúp giải thích.

Cảm ơn bạn rất nhiều. BR, Henry

+0

bạn có thể đăng bạn mã trong onPause() – Raj

+0

xem điều này: http: //stackoverflow.com/a/9190541/265167 –

Trả lời

7

Điều này thực sự xảy ra vì khi phím Home được nhấn lâu, không có hoạt động nào được khởi chạy. OnPause/onStop sẽ chỉ được gọi nếu bạn chọn một trong các ứng dụng có trong danh sách "Ứng dụng gần đây".

Các tài liệu của onPause() là khá rõ ràng:

gọi như là một phần của vòng đời hoạt động khi một hoạt động đang diễn ra vào nền, nhưng đã không (chưa) bị giết.

+0

Cảm ơn , MobileCushion, Câu trả lời của bạn là chính xác. Điểm là "Ứng dụng gần đây" sẽ không được thêm vào ngăn xếp ứng dụng, do đó là kết quả. – Henry

-1

Khi bạn đưa lên ứng dụng gần đây phương pháp onStop được gọi là, phương pháp onStop được gọi càng sớm càng UI của hoạt động này không phải là tập trung như vậy

0

@Henry Vui lòng thử mình bằng cách kiểm tra luồng ứng dụng. Tạo một Hoạt động trong đó Ghi đè tất cả các phương thức và nhật ký in theo tất cả các phương thức. Luồng đang ở trênCreate >> onStart/restart >> onResume và khi bạn nhấn nút home hoặc bắt đầu bất kỳ hoạt động mới nào thì nó được gọi là onPause >> onStop và nếu bạn hoàn thành ứng dụng thì ứng dụng của bạn sẽ hủy/hoàn thành vì vậy sự nhầm lẫn.

0

Đây là những gì các tài liệu chính thức nói về onPause()

gọi như là một phần của vòng đời hoạt động khi một hoạt động đang diễn ra vào nền, nhưng đã không (chưa) bị giết. Các đối tác để onResume().

Khi hoạt động B được khởi chạy trước hoạt động A, gọi lại này sẽ được gọi trên A. B sẽ không được tạo cho đến khi OnPause() trả về, vì vậy đảm bảo không làm gì dài ở đây.

Để biết chi tiết please see this.

3
public class MainActivity extends Activity 
{ 
    String tag="my result"; 

    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     Log.v(tag,"I am in oncreate"); 
    } 

    @Override 
    protected void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
     Log.v(tag,"I am in onDestroy"); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     Log.v(tag,"I am in onpause"); 
    } 

    @Override 
    protected void onRestart() { 
     // TODO Auto-generated method stub 
     super.onRestart(); 
     Log.v(tag,"I am in onRestart"); 
    } 

    @Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     Log.v(tag,"I am in onresume"); 
    } 

    @Override 
    protected void onStart() { 
     // TODO Auto-generated method stub 
     super.onStart(); 
     Log.v(tag,"I am in onstart"); 
    } 

    @Override 
    protected void onStop() { 
     // TODO Auto-generated method stub 
     super.onStop(); 
     Log.v(tag,"I am in onstop"); 
    } 
} 

Chạy và kiểm tra logcat.nhấn nút quay lại và sau đó kiểm tra. sau khi một lần nữa bắt đầu ứng dụng và

Bấm nút gọi, sau đó kiểm tra logcat ngay bây giờ bấm nút Quay lại và kiểm tra lại logcat. bạn có thể dễ dàng hiểu vòng đời của Hoạt động.

2

Trong nhiều điện thoại hiện đại, danh sách ứng dụng gần đây là hoạt động và kích hoạt . Tôi đã thử nghiệm điều này trên một vài điện thoại Samsung và LG, và các gói là com.android.systemuicom.lge.launcher2 tương ứng.

Điều đó có nghĩa là, có vẻ như bạn không thể dựa vào việc nhận được onPause khi bạn mở màn hình ứng dụng gần đây. Tôi tò mò muốn biết có bao nhiêu thiết bị không cung cấp cho bạn số ...

Các vấn đề liên quan