2011-09-29 14 views
8

Nhìn vào tài liệu android và có vẻ như chúng tôi không có khả năng biết khi nào ứng dụng tắt. Cho dù đó là rõ ràng bởi người dùng hoặc tự động bởi hệ điều hành.Bạn có thể theo dõi thời điểm ứng dụng android đã bị chấm dứt không?

Dưới đây là onTerminate() documentation chỉ khả dụng trong trường hợp mô phỏng.

public void onTerminate() 

Từ: API Level 1

Phương pháp này là để sử dụng trong mô phỏng quá trình môi trường. Nó sẽ không bao giờ được gọi trên thiết bị Android sản xuất, nơi các quy trình được xóa bằng cách đơn giản giết chúng; không có mã người dùng (bao gồm cả cuộc gọi lại này) được thực hiện khi thực hiện điều đó.

Có ai có bất kỳ cách tiếp cận nào khác để báo cáo lại khi người dùng đóng ứng dụng không?

Chúng tôi cần biết từ quan điểm thí điểm/khả năng sử dụng nếu chúng tôi cần kết hợp chức năng bổ sung vào ứng dụng sản xuất trong tương lai của chúng tôi.

+0

Nếu bạn có thể đưa ra ý tưởng về những gì bạn muốn làm khi đơn đăng ký chấm dứt, chúng tôi có thể đề xuất một số ý tưởng về cách thực hiện. –

+0

Về cơ bản, tôi chỉ muốn gửi một yêu cầu về lửa cho cơ sở hạ tầng nội bộ của chúng tôi để cho chúng tôi biết điều đó đang xảy ra. Không có gì thực sự hơn. Biết tần suất xảy ra này sẽ ảnh hưởng đến hướng sản phẩm của chúng tôi trong tương lai. –

+1

Mặc dù không có api cụ thể nào biết rằng ứng dụng của bạn đã bị hệ thống hoặc người dùng giết có nhiều apis có thể cho bạn biết đôi khi điều gì xảy ra với ứng dụng của bạn: Nếu bạn kiểm tra isFinishing() trong phương thức onDestory, bạn có thể xem Hoạt động có đóng cửa do hoàn thành() hoặc một số lý do khác (làm sạch os ví dụ). Ngoài ra, bạn có thể sử dụng dịch vụ để theo dõi xem tác vụ của ứng dụng của bạn có bị xóa bởi người dùng hay không (ví dụ: xóa hoạt động khỏi các lần gần đây) bằng cách nghe phương thức onTaskRemoved() của nó. – MikeL

Trả lời

5

Không chắc liệu điều này sẽ giúp bạn ...

Trong ứng dụng của tôi, tôi đang sử dụng Activity.onDestroy() để làm dọn dẹp mà tôi cần. Tôi có một vài hoạt động - và có onDestroy() trong mỗi hoạt động.

Đây là gần nhất tôi đã làm những gì tôi cần - và nó thực sự hoạt động khá tốt.

+3

Đánh giá cao phản hồi, cách tiếp cận này có vẻ như sẽ bắt được các yêu cầu không mong muốn. Ví dụ, khi ứng dụng đã được đặt nền và os đang tìm kiếm không gian. Nó có khả năng sẽ loại bỏ các cá thể hoạt động trong ngăn xếp lịch sử, nó sẽ gọi các onDestroy của chúng. Trừ khi họ là những điều kiện khác mà bạn đang kiểm tra trong trường hợp này? –

+0

Tôi không thực hiện bất kỳ kiểm tra đặc biệt nào. Trong onDestroy() tôi lưu trạng thái của hoạt động và sau đó trong onCreate() khôi phục trạng thái đó. Trong khi điều này làm việc tốt cho ứng dụng của tôi, tôi đánh giá cao rằng nhu cầu của bạn có thể khác nhau. –

+0

onDestroy chắc chắn sẽ hoạt động. nhưng tôi muốn theo dõi sự kiện đóng ứng dụng như khi chúng tôi xóa ứng dụng khỏi ngăn xếp ứng dụng hoặc thiết bị sẽ tắt máy vì pin pháp luật. có giải pháp nào không? –

3

Đã xem tài liệu android và có vẻ như chúng tôi không có khả năng biết khi nào ứng dụng tắt. Cho dù đó là rõ ràng bởi người dùng hoặc tự động bởi hệ điều hành.

Người dùng không đóng ứng dụng trên Android.

Có ai có bất kỳ cách tiếp cận nào khác để báo cáo lại khi người dùng đóng ứng dụng hay không.

Người dùng không đóng ứng dụng trên Android.

Android, về mặt này, hoạt động giống như một trình duyệt Web. Người dùng không đóng các ứng dụng web trong trình duyệt Web. Họ có thể đóng trình duyệt. Họ có thể đóng một tab. Họ có thể nhấn nút trang chủ và điều hướng đến một trang web/ứng dụng khác. Họ có thể chọn dấu trang và điều hướng đến một trang web/ứng dụng khác. Họ có thể kéo một tài liệu vào trình duyệt và xem nó. Họ có thể nhấp đúp vào biểu tượng máy tính để bàn và xem nó. Và họ có thể nhấp vào một số liên kết "đăng xuất" trong trang web/ứng dụng hiện đang xem. Bất kỳ nguyên nhân nào trong số này khiến người dùng rời khỏi bất kỳ trang web/ứng dụng nào, nhưng không ai trong số họ được hiểu là "đóng" trang web/ứng dụng theo cách tương tự khi nhấp vào nút đóng trên cửa sổ hệ điều hành dành cho máy tính để bàn. là "đóng" ứng dụng dành cho máy tính để bàn.

Như ghi chú @Aleks G, có nhiều phương pháp vòng đời khác nhau mà bạn có thể ghi đè để tìm hiểu xem người dùng đang làm gì đối với hoạt động. onStop() cho biết điều gì đó khác đã tiếp nhận đầu vào nền trước và hoạt động hiện tại của bạn không còn hiển thị nữa. onUserLeaveHint() cho biết rằng người dùng đã nhấn TRANG CHỦ. Và cứ thế. Nhưng những người ở cấp độ hoạt động, không phải ở cấp ứng dụng.

+3

Giết ứng dụng thông qua ứng dụng trình quản lý tác vụ, đó sẽ là tình huống mà người dùng đóng ứng dụng. –

+2

@DevanDanger: Bạn không được thông báo khi người dùng giết ứng dụng thông qua trình quản lý tác vụ cũng như khi người dùng buộc dừng ứng dụng thông qua màn hình Quản lý dịch vụ trong Cài đặt. – CommonsWare

+6

Chính xác. "người dùng giết một ứng dụng thông qua trình quản lý tác vụ" bằng "người dùng đóng ứng dụng" Đó là tất cả những gì tôi đang nói ở đó, người dùng đóng ứng dụng. Điều đó đang được nói, tôi đã tự hỏi nếu có anyway chúng ta có thể theo dõi điều đó xảy ra. Xin lỗi vì sự nhầm lẫn. –

0

Thực hiện Hoạt động mở rộng cơ sở trong Ứng dụng của bạn và mở rộng BaseActivity này thay vì Hoạt động. Trong BaseActivity này, hãy ghi đè lên phương thức onDestroy(). Giống như

@Override 
protected void onDestroy() { 
     super.onDestroy(); 
    //Write the code that you want to do if the application terminates 
}