9

マーケットでアプリの新しいバージョンを公開するときはいつでも、ユーザーが「自動更新」オプションを有効にしている場合、アプリは自動的に更新されます。

アプリには、常に実行されるサービスが含まれています。ただし、自動更新が発生すると、実行中の古いアプリは強制終了されますが、新しいアプリは起動されません。更新はユーザーに対してほとんど透過的に行われるため、サービスの中断がほとんどないように、更新後にアプリのサービスを自動的に再開する必要があることは理にかなっています。

市場からの実際の更新でこれをテストするのは少し難しいので、次の2つのadbコマンドを使用してこの更新プロセスをシミュレートしています。最初のバージョンのインストール:

adb install oldversion.apk

自動更新:

adb install -r newversion.apk

2番目のコマンドを実行した後、アプリは正常に更新されましたが、停止され、再起動されていません。

新しいバージョンのサービスを自動的に開始するにはどうすればよいですか?

4

3 に答える 3

8

アプリが以上で実行されている場合は、リスニングをAPI 12登録することをお勧めします。BroadcastReceiverandroid.intent.action.MY_PACKAGE_REPLACED

このインテントは、アプリケーションが更新を取得した場合にのみトリガーされます。

于 2014-06-18T15:57:16.300 に答える
5

これは注意深くテストする必要がありますが、アクションIntent.ACTION_PACKAGED_REPLACEDを使用して放送受信機でキャッチできるはずです。

次に、受信者からサービスを開始します。

于 2013-03-22T14:13:39.853 に答える
1

に登録BroadcastReceiverするIntent.ACTION_PACKAGE_REPLACED

次に、自分のものと比較EXTRA_UIDします。一致する場合は、サービスを再開できます。

于 2013-03-22T14:16:49.017 に答える