1

常に同じハードウェアで実行される特定のコンテキスト用のカスタムアプリケーションを設計しており、その上で実行されているソフトウェアを完全に制御できます。

少量のデータをデバイスに配信するには、プッシュ接続と同様の永続的なソケット接続が必要です。ユーザーが別のアプリケーションに変更する可能性があるため、ソケットを開いた状態でバックグラウンドサービスを用意し、Androidがソケットを強制終了しないようにする必要があります。デバイスがインターネットに接続されないため、サードパーティのプッシュソリューション(Googleでさえ)に頼ることはできません。

私はこのトピックに関連する多くの投稿を見ましたが、それらのすべてはそれが良い考え/可能ではないことを示唆しています。アプリは特定のコンテキストで実行されるため、誰にも害はありません:)

少し提案/ガイドしていただけませんか?

シェール!

4

2 に答える 2

0

たまに殺されるのが大問題?実行されているかどうかを確認して、実行されていない場合は開始できませんか?アクティビティでそれを行うには:

if (!isMyServiceRunning()) {
    startService();
}

...

private boolean isMyServiceRunning() {
   ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
   for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
      if (MyService.class.getName().equals(service.service.getClassName())) {
     return true;
      }
   }
   return false;
}

private void startService() {
   Intent myService = new Intent(this, MyService.class);
   startService(myService);
}
于 2012-12-27T13:56:11.943 に答える
0

データをプッシュしていなくてもソケット接続を開くことはお勧めしませんが、非同期タスクを使用してソケット接続を開いたままにしてみることができます。ソケット接続が閉じるたびに。非同期タスクを生成できます。

于 2012-12-27T13:57:03.990 に答える