そのため、バインドされたサービスをセットアップしましたが、呼び出すたびにサービスのメソッドが呼び出されるbindService()
ことはなく、呼び出されることもありません。私が見ることができるエラーはありません。何もスローされません。onBind()
onServiceConnected()
private LoggingService mService;
private boolean mBound = false;
private boolean mLogging = false;
private ServiceConnection mConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder service){
LocalBinder binder = (LocalBinder) service;
mService = binder.getService();
mBound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0){
mBound = false;
}
};
...
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if(!mBound){
Intent intent = new Intent(getActivity(), LoggingService.class);
getActivity().bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
}
}
このすべてにブレークポイントを配置します。bindService()
間違いなく呼び出されますが、どれだけ待ってもonServiceConnected()
、サービスで何も呼び出されません。
だから私がここに着くと、それはnullPointerException
logging.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(mLogging){
Toast toast = Toast.makeText(getActivity(),
"Service stopping", Toast.LENGTH_LONG);
toast.show();
mService.stopLogging();
mLogging = false;
} else {
Toast toast = Toast.makeText(getActivity(),
"Service Starting", Toast.LENGTH_LONG);
toast.show();
mService.startLogging("dude.jsn");
mLogging = true;
}
}
});
ロギングはButton
. 私が何を逃したのか分かりません。これはフラグメントから呼び出されていますが、それは問題ではありませんか? コンテキストはまだ有効です。
public class LoggingService extends Service {
public static final int LOG_INTERVAL = 500;
LocalBinder mBinder = new LocalBinder();
LoggingThread thread;
public class LocalBinder extends Binder {
LoggingService getService() {
return LoggingService.this;
}
}
...
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
}
私が見逃したものを指摘する助けは素晴らしいでしょう。