0
カウンタをインクリメントして記録する簡単なサービスを作成しました。サービスが複数回起動されたときに何が起こるか
public class AudioService extends Service {
int i=0;
private final IAudioInterface.Stub mBinder = new IAudioInterface.Stub() {
public int getI()
{
return i;
}
};
@Override
public IBinder onBind(Intent intent) {
Log.d("onBind from service","****");
return mBinder;
}
@Override
public void onCreate() {
super.onCreate();
Log.d("onCreate from service","***");
Log.d("i=","="+i);
i=i+1;
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("OnDestroy Called from service","***");
}
public void onStartCommand(Intent intent, int startId) {
super.onStart(intent, startId);
Log.d("onStartCommand from service","***");
}
@Override
public boolean onUnbind(Intent intent) {
Log.d("onUnbind from service","***");
return super.onUnbind(intent);
}
私は彼のサービスのoncreateメソッドでiの値を増やしています。
public class AidlInterfaceServiceActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
private static final String TAG = "Audio:Service";
IAudioInterface mService = null;
boolean connected = false;
ServiceConnection mConnection = new ServiceConnection(){
public void onServiceConnected(ComponentName arg0, IBinder service) {
// TODO Auto-generated method stub
connected = true;
Log.d("Service connected","**");
mService = IAudioInterface.Stub.asInterface(service);
try {
Log.d("i from client","="+mService.getI());
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void onServiceDisconnected(ComponentName arg0) {
// TODO Auto-generated method stub
Log.i(TAG, "Service disConnected");
connected = false;
mService= null;
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d("on created ","**********");
Intent music = new Intent();
music.setClass(this,AudioService.class);
startService(music);
bindService(music, mConnection, Context.BIND_AUTO_CREATE);
}
以下のようにクライアント活動は、AIDLファイルが
interface IAudioInterface
{
int getI();
}
以下のようになっている私は、クライアントの活動にiの値が「0」であるたびに実行すると問題があります。 i値が増加していません。
これらのクエリがあります。
1.サービスを複数回起動すると何が起こりますか?
2.サービスが複数回バインドされている場合に発生します。
3.サービスクラス内のデータメンバーが何回も起動されたときに、そのデータメンバーに何が起こるのですか。それらのデータメンバーが再初期化されます。
私は本当に混乱しています。誰か助けてください。