理解できない問題が発生しました。私はそれを8日間解決しようとしていますが、まだ立ち往生しています。より経験豊富な開発者に尋ねましたが、彼らは答えられません。だからどうか、私は必死に助けを求めます
このサービスは単純です - メソッドはまだ 1 つしかありません - ログが返されるはずです - getLog()
public class AudioService extends Service{
MyBinder binder = new MyBinder();
public void getLog(){Log.d("MyLog","I reached getLog!");}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return binder;
}
class MyBinder extends Binder {
AudioService getService() {
return AudioService.this;
}
}
}
audioService.getLog(); にアクセスしようとすると MainActivity がクラッシュします。ただし、 AudioService audioService= new AudioService(); という行を挿入してもクラッシュしません。しかし、それは私が望んでいないことです-あるアクティビティからmp3を開始し、別のアクティビティから停止できるように、オーディオを再生するサービスを設定する必要があります。ここに MainActivity があります:
public class MainActivity extends Activity {
ServiceConnection sConn;
Intent intservice;
AudioService audioService ;
boolean bound=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
intservice=new Intent(this,AudioService.class);
sConn=new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName arg0, IBinder binder) {
// TODO Auto-generated method stub
audioService = ((AudioService.MyBinder) binder).getService();
bound=true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
// TODO Auto-generated method stub
bound=false;
}
};
startService(intservice);
audioService.getLog();
}
@Override
protected void onStart() {
super.onStart();
bindService(intservice, sConn, Context.BIND_AUTO_CREATE);
}
@Override
protected void onStop() {
super.onStop();
if (!bound) return;
unbindService(sConn);
bound = false;
}
}
マニフェストで何かを台無しにした場合に備えて、ここにサービスの一部を含めます。
</activity>
<service android:enabled="true" android:name="AudioService"></service>
</application>
</manifest>
ここで何が悪いのか理解できないので、どこが間違っていたのかアドバイスをお願いします