onCreate() でサービスを開始し (onCreate が初めて呼び出された場合)、onStart() で bindService を呼び出します。サービスはおそらく機能しますが、bindService を呼び出した後、サービスのローカル インスタンスはまだ null です。さらに、getService() が呼び出されていないようです。ここにいくつかのコードがあります:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
if(savedInstanceState == null){
final Intent i = new Intent(this, HostService.class);
startService(i);
}
}
protected void onStart(){
super.onStart();
bindService(new Intent(this, StartGameActivity.class), connection, Context.BIND_AUTO_CREATE);
}
private ServiceConnection connection = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName arg0, IBinder arg1) {
HostBinder binder = (HostBinder) arg1;
hostService = binder.getService();
isBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
isBound = false;
}
};
および HostService で:
...
private HostBinder binder = new HostBinder();
...
public class HostBinder extends Binder{
HostService getService(){
Log.d(TAG, "getService");
return HostService.this;
}
}
@Override
public IBinder onBind(Intent arg0) {
return binder;
}
onStart() が呼び出された後でも hostService が null のままであるのはなぜですか? また、getService が呼び出されないのはなぜですか (「getService」は LogCat に出力されません)。
thx&よろしく