2013-03-22 182 views
8

無論何時我在Market上發佈我的應用程序的新版本,如果用戶啓用了「自動更新」選項,該應用程序將自動更新。市場更新後自動重新啓動應用程序

該應用程序包含一個不斷運行的服務。但是當自動更新發生時,舊的正在運行的應用程序被終止,但新的未啓動。 由於更新大多對用戶透明,因此應該在更新後自動重新啓動應用程序的服務,這樣就幾乎不會中斷服務。

用真正的市場更新測試這個有點困難,所以我使用以下兩個adb命令來模擬這個更新過程。 安裝的第一個版本:

adb install oldversion.apk 

自動更新:

adb install -r newversion.apk 

我跑第二個命令後,應用程序被成功更新,但它已被停止並不會重新啓動。

我們如何才能使新版本的服務自動啓動?

+1

http://stackoverflow.com/questions/10728016/android-restart-application-after-update-action-package-replaced – Alexis 2013-10-10 00:25:40

回答

4

這件事情,你就必須仔細測試,但你應該能夠用行動Intent.ACTION_PACKAGED_REPLACED

然後你從你的接收器啓動該服務具有廣播接收器抓住它。

+0

我試圖但不工作...我嘗試http://pastie.org/ 8223893你能提出建議嗎? – 2013-08-10 07:19:50

+0

我覺得使用ACTION_MY_PACKAGE_REPLACED會更好?因爲它只是被髮送到正在更新的軟件包,而不是所有軟件包。 – code2be 2016-01-27 05:16:57

1

註冊一個BroadcastReceiverIntent.ACTION_PACKAGE_REPLACED

然後,用自己的比較EXTRA_UID。如果匹配,則可以重新開始服務。

7

如果您的應用程序在API 12或更高版本上運行,那麼我會建議您註冊一個BroadcastReceiver,聽android.intent.action.MY_PACKAGE_REPLACED

只有當您的應用程序得到更新時,纔會觸發此意向。

相關問題