2012-06-26 53 views
0

我在AlarmManager中啓動重複任務,但是如何獲取服務中的重複計數。 這裏是代碼 MyActivity獲取在重複運行AlarmManage中運行的服務時間

mAlarmSender = PendingIntent.getService(MyActivity.this,0, new Intent(MyActivity2.this, AutoBuild.class), 0);

long firstTime = SystemClock.elapsedRealtime(); 

    AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 

    am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
      firstTime, 1000 * 5, mAlarmSender); 

的AutoBuild

public class AutoBuild extends Service {

private String[] infos; 

private Intent mIntent; 

private String pathStr; 

static final String TAG = "AutoBuild"; 

private int i=0; 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    this.mIntent = intent; 

    return START_STICKY; 
} 

@Override 
public void onCreate() { 

    mNM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 

    printData(i);/**print result*/ 

    i++;/*count ++*/ 

    AutoBuild.this.stopSelf();/*stop service */ 

} 

private void printData(int i) {  

    Log.i(TAG, i + "");  
} 


@Override 
public IBinder onBind(Intent intent) { 

    return mBinder; 
} 

private final IBinder mBinder = new Binder() { 

    @Override 
    protected boolean onTransact(int code, Parcel data, Parcel reply, 
           int flags) throws RemoteException { 
     return super.onTransact(code, data, reply, flags); 
    } 
}; 

}

i的值始終爲0:反正有沒有可以更改此值時Alarmanage重複

回答

0

Service的事情是,它作爲單個實例運行。每次啓動相同的服務時,只會調用onStartCommand()方法。因此,如果您使用的是alarmManager並且想要更改Service中的變量,則可以在onStartCommand()中執行此操作。當Service第一次啓動時,onCreate()僅被調用一次,因此在您的情況下,變量i在連續調用Service後不會改變。

詳細信息請參考以下內容: http://developer.android.com/guide/components/services.html#StartingAService

+0

NO,事實上,在這些條件下onStartCommand,的onCreate()總是調用時報警repeat.no重要的變量,你改變了它仍然是相同的 –