2016-02-24 17 views
5

Tôi đã tìm thấy hoạt động của mình onStop() phương pháp sẽ được gọi với thời gian trễ dưới 10 giây. Tôi chưa bao giờ thấy trước hành vi này.Android - onStop() sẽ được gọi với độ trễ

Lưu ý: - Các hoạt động là singleTop và nó bắt đầu với Intent.FLAG_ACTIVITY_REORDER_TO_FRONT cờ.

Lưu ý: - Tôi đang sử dụng Công cụ xây dựng v23.0.2.

Sự chậm trễ không phải trước và phương thức sẽ được gọi ngay lập tức.

+0

Bạn có thể giải thích thêm một chút không? Hoạt động nào bắt đầu? Như tôi đoán có ít nhất 2 hoạt động trong câu hỏi này. –

+0

@TinTran Đồng ý. Vui lòng cung cấp thêm chi tiết cụ thể. – JohnWatsonDev

+0

bạn đã gỡ lỗi mã của mình chưa ??Vui lòng giải thích câu hỏi của bạn, dán một số đoạn mã với logcat. Nó sẽ giúp chúng ta hiểu được vấn đề chính xác. –

Trả lời

2

Tôi đoán rằng bạn đang bắt đầu hoạt động khác và bạn mong đợi hoạt động hiện tại nhận được cuộc gọi lại onStop(). Theo activity lifecycle, phương thức onPause() được gọi trước onStop(). Trong một số trường hợp, onSaveInstance() cũng được gọi trước phương thức onStop(). Ngoài ra, khi bạn gọi startActivity hoặc startActivityForResult (một lần nữa, tôi giả sử đó là lý do tại sao bạn mong đợi onStop được gọi), tùy thuộc vào các tham số được truyền, nếu các tham số đó cần được tính/lấy/etc, nó có thể mất một thời gian trước khi hệ thống có thể thực thi startActivity, đó sẽ là sớm nhất mà Android sẽ bắt đầu các cuộc gọi vòng đời. Trong trường hợp không có bất kỳ mã nào ở đây, không thể thấy những gì khác được thực thi trước khi onStop được gọi. Tôi đề nghị bạn kiểm tra tiến trình cho thời gian thực thi mã, bắt đầu với startActivity và khi onStop được gọi, có thể bằng cách ghi nhật ký thời gian cho mỗi cuộc gọi, bắt đầu với dấu thời gian ngay trước cuộc gọi startActivity, kết thúc bằng dấu thời gian ở đầu onStop, để xem thời gian được sử dụng. Tôi cũng khuyên bạn nên đơn giản hóa điều này bằng cách đảm bảo rằng tất cả các tham số cho startActivity hoặc startActivityForResult trước đây được đặt thành giá trị của chúng, nếu điều đó chưa xảy ra.

0

Có thể giả lập là chậm ngày nay

nhưng onStop() nên được gọi cùng một lúc như lệnh đơn

không onPause() hoặc bất cứ điều gì được gọi là trước khi điều này

0

Trong trường hợp của tôi, tôi dừng lại trình phát video khi số gọi onStop() được gọi, nhưng lệnh gọi onStop() bị trễ 10 giây.

Bạn có thể sử dụng giống như eventBus, RxBus để gửi một sự kiện trong

Application.ActivityLifecycleCallbacks { 

    //post event here.and check the activity's Name in my targetActivity which play my video. 
    onActivityStarted() 

} 
0

tôi đã cùng một vấn đề. Khi tôi bắt đầu một hoạt động với startActivity(), onStop() được gọi chính xác 10 giây sau onPause().

Trong trường hợp của tôi, hoạt động được khởi chạy có một đoạn, có một WebView. Tôi không có ý tưởng tại sao, nhưng nếu tôi gỡ bỏ dòng sau, sự chậm trễ chỉ khoảng 2 giây.

webView.setScrollbarFadingEnabled(false);

0

nếu u muốn khắc phục vấn đề đó, chỉ cần vào manifest và thêm noHistory: true để hoạt động ur nó sẽ kêu gọi Dừng chậm trễ trực tiếp không 10sec hơn. đã có cùng một vấn đề này cố định nó, cũng có thể có thể vượt qua nó lập trình trong một lá cờ nếu u muốn làm như vậy.

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