1
BIND_AUTO_CREATEフラグを付けて、bindServiceメソッドだけでServiceオブジェクトを生成・起動した場合、起動元でunbindServiceメソッドを実行すると、起動先のServiceオブジェクトはdestroyされる。
BIND_AUTO_CREATEフラグを付けて、bindServiceメソッドだけでServiceオブジェクトを生成・起動した場合、起動元でunbindServiceメソッドを実行すると、起動先のServiceオブジェクトはdestroyされる。
例えば、次のとおり、bindServiceメソッドだけでServiceを生成した場合、unbindServiceメソッドを実行すると、Serviceオブジェクトはdestroyする。
Intent it;
it = new Intent(this, MyService.class);
bindService(it, conn, BIND_AUTO_CREATE);
2
同一のServiceクラスを引数として、startServiceメソッドとbindServiceメソッドとを実行させた場合、そこで稼働するのは、同一の1個のServiceオブジェクトである。
つまり、startServiceメソッドやbindServiceメソッド毎に、異なったオブジェクトのServiceが起動してくるのでは無い。
つまり、startServiceメソッドやbindServiceメソッド毎に、異なったオブジェクトのServiceが起動してくるのでは無い。
例えば、次のように実行しても、生成されるServiceオブジェクトは1個である。
Intent it;
it = new Intent(this, MyService.class);
bindService(it, conn, BIND_AUTO_CREATE);
it = new Intent(this, MyService.class);
it.putExtra("MyMes", true);
startService(it);
3
上記2のように、startServiceメソッドとbindServiceメソッドが混在して実行した場合、unbindServiceをしても、Serviceオブジェクトがdestroyされることは無い。startServiceメソッドとbindServiceメソッドが混在して実行されていても、(bindServiceメソッドに基づく)Messengerでのやり取りは可能である。
4
unbindServiceメソッドを実行した後も、Serviceを継続して存続させたいのであれば、事前にstartServiceメソッドをダミーで実行させておけば良い。
0 件のコメント:
コメントを投稿