2013-03-22 44 views
8

Bất cứ lúc nào tôi xuất bản phiên bản mới của ứng dụng trong Market, nếu người dùng đã bật tùy chọn "tự động cập nhật", ứng dụng sẽ được cập nhật tự động.Tự động khởi động lại ứng dụng sau khi cập nhật thị trường

Ứng dụng có chứa dịch vụ chạy liên tục. Nhưng khi cập nhật tự động xảy ra, ứng dụng đang chạy cũ bị giết, nhưng ứng dụng mới chưa được bắt đầu. Vì bản cập nhật diễn ra chủ yếu trong suốt đối với người dùng, nên dịch vụ của ứng dụng sẽ tự động bắt đầu lại sau khi cập nhật để hầu như không bị gián đoạn dịch vụ.

Hơi khó để kiểm tra điều này với bản cập nhật thực sự từ thị trường, vì vậy tôi đang sử dụng hai lệnh adb sau đây để mô phỏng quá trình cập nhật này. Cài đặt của phiên bản 1:

adb install oldversion.apk 

Tự động cập nhật:

adb install -r newversion.apk 

Sau khi tôi chạy lệnh thứ hai, ứng dụng được cập nhật thành công, nhưng nó đã được dừng lại và không khởi động lại.

Làm cách nào để dịch vụ của phiên bản mới bắt đầu tự động?

+1

http://stackoverflow.com/questions/10728016/android-restart-application-after-update-action-package-replaced – Alexis

Trả lời

4

Đó là một cái gì đó bạn sẽ phải kiểm tra cẩn thận nhưng bạn sẽ có thể bắt nó với một máy thu phát sóng với hành động Intent.ACTION_PACKAGED_REPLACED

Sau đó, bạn bắt đầu dịch vụ từ máy thu của bạn.

+0

Tôi đang cố gắng nhưng không hoạt động ... Tôi đã thử http://pastie.org/ 8223893 Bạn có thể đưa ra đề xuất không? –

+0

Tôi nghĩ rằng việc sử dụng ACTION_MY_PACKAGE_REPLACED sẽ tốt hơn? Vì nó chỉ được gửi đến gói đang được cập nhật, không phải tất cả các gói. – code2be

1

Đăng ký một BroadcastReceiver-Intent.ACTION_PACKAGE_REPLACED

Sau đó, so sánh với EXTRA_UID của riêng bạn. Nếu nó khớp, bạn có thể bắt đầu lại dịch vụ của mình.

7

Nếu ứng dụng của bạn đang chạy trên API 12 trở lên, tôi khuyên bạn nên đăng ký BroadcastReceiver nghe android.intent.action.MY_PACKAGE_REPLACED.

Mục đích này chỉ được kích hoạt nếu ứng dụng của bạn nhận được bản cập nhật.

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