2012-02-15 39 views
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」 。 我的價值沒有增加。

我有這些疑問。
1.服務多次啓動時會發生什麼情況。
2.當服務被限制多次時會發生什麼。
3.多次啓動時,服務類中的數據成員會發生什麼情況?這些數據成員是否被重新初始化?

我真的很困惑..任何一個請幫忙。

回答

0

如果將計數器變量聲明爲靜態,它有幫助嗎?

相關問題