0

AlarmManager で繰り返しタスクを開始しましたが、サービスで繰り返し回数を取得するにはどうすればよいですか。ここにコード MyActivity があります

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 が繰り返されるときにこの値を変更できる方法はありますか

4

1 に答える 1

0

Service問題は、単一のインスタンスとして実行されることです。同じサービスを開始するたびに、onStartCommand()メソッドのみが呼び出されます。したがって、 を使用していalarmManagerて の変数を変更したいService場合は、 で行うことができますonStartCommand()。は、 が初めて開始されたonCreate()ときに 1 回だけ呼び出されるServiceため、この場合、変数iは を連続して呼び出した後も変更されませんService

詳細については、次を確認してください: http://developer.android.com/guide/components/services.html#StartingAService

于 2012-06-26T03:58:37.113 に答える