6

私は小さなチャットアプリケーションを持っています。開始すると、サービスにバインドされます。このサービスには、サーバーとの tcp/ip 接続があります。

アプリケーションがフォアグラウンドにない場合、私のサービスはステータス通知を作成します。ここまでは順調ですね。

たとえば、「onDestroy」メソッドでタスクマネージャーを使用してアプリケーションが破棄されると、バインド解除を呼び出します。現在、サービスは強制終了されています。したがって、私の質問は、クライアントがバインドされていなくてもサービスを存続させる方法です。

Googe doc: 「サービスは、接続が確立されている限り実行され続けます (クライアントがサービスの IBinder で参照を保持しているかどうかに関係なく)。」

ありがとうございます。

4

3 に答える 3

9

サービスをフォアグラウンド サービスにすることができます。これにより、ユーザーはサービスが実行されていることを確認できるように、通知バーにアイコンが表示されます。そうしないと、サービスを実行し続けることができません。ところで、エバーラスティング サービスは Android のアンチパターンであること、システムメモリが少なくなったときにアプリを強制終了できること、アプリがしばらく使用していないことを認識しておく必要があります。合法的に「永久に」存続する必要があることを行っている場合は、フォアグラウンド サービスを使用して行う必要があります。

于 2012-08-18T19:33:00.007 に答える
5

これを読む:

http://developer.android.com/guide/components/services.html#Foreground

于 2012-08-18T19:53:37.203 に答える
2

バインダー アクティビティが破棄されてもサービスを存続させたい場合は、最初にアクティビティでサービスを開始してから bindService を呼び出すことができます。

startService(serviceIntent);

bindService(serviceIntent, connection, Context.BIND_AUTO_CREATE);
于 2012-08-18T19:56:57.817 に答える