わかりました、私は多くの質問を見てきましたが、解決策を見つけることができません...
「java.lang.IllegalArgumentException: Service not registered:」を取得し続ける
ServiceConnection の「onServiceConnected」メソッドが呼び出されていないことに注意してください....
これは私が持っているものです(すべてのLog.eを無視します..デバッグせずに呼び出された関数を見つける他の方法を本当に知りません):
マニフェストでのサービスの宣言方法:
<service android:name="com.example.servicestry.MyService" android:enabled="true"/>
私の活動
public class MainActivity extends Activity {
MyService mBoundService=null;
public ServiceConnection mConnection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mConnection=new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
// TODO Auto-generated method stub
Log.e("onserviceconnected","");
mBoundService = ((MyService.LocalBinder)service).getService();
Toast.makeText(getApplicationContext(), "local service connected",Toast.LENGTH_SHORT).show();
}
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
Log.e("onservicedisconnected","");
mBoundService=null;
Toast.makeText(getApplicationContext(), "local service disconnected",Toast.LENGTH_SHORT).show();
}
};
this.doBindService();
Timer timer=new Timer();
timer.schedule(new RemindTask(), 3000);
}
public void doUnbindService(){
Log.e("doUnbindService","");
unbindService(mConnection);
}
public void doBindService(){
boolean b=bindService(new Intent(this,MyService.class),mConnection, Context.BIND_AUTO_CREATE);
if(b){
Toast.makeText(this, "binding service", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(this, "binding service FAILED", Toast.LENGTH_SHORT).show();
}
this.doUnbindService();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
public class RemindTask extends TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
//Toast.makeText(getApplicationContext(), "this is runner", Toast.LENGTH_SHORT).show();
Log.e("runner run","r");
doUnbindService();
}
}
}
私のサービスクラス
パッケージcom.example.servicestry;
public class MyService extends Service{
LocalBinder mBinder= new LocalBinder();;
@Override
public void onCreate(){
super.onCreate();
Log.e("binder create","ASDF");
}
@Override
public int onStartCommand(Intent i,int flag, int startId){
Log.e("on start command","D");
return super.onStartCommand(i, flag, startId);
}
@Override
public void onDestroy(){
super.onDestroy();
Log.e("DEST","");
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.e("onbind","ASDF");
return mBinder;
}
public class LocalBinder extends Binder {
MyService getService() {
return MyService.this;
}
}
}