android 意图服务循环

android intent service in loop

我想使用 intent 服务 将数据发送到 服务器。我所做的是启动意图服务,在 class 中,我从本地数据库获取数据,并在 for 循环中将数据发送到服务器。有用。但我的问题是,我是否应该使用 for 循环来启动意图服务,例如

public void onReceive(Context context, Intent intent) {
for (int i=0;i<5;i++){
        Intent startService = new Intent(context, SampleService.class);
        startWakefulService(context, startService);
}

}

我正在使用警报管理器来触发该服务。什么是正确的方法?请帮忙。谢谢! .这是我的代码` public class ScheduleAlarmReciever extends WakefulBroadcastReceiver{

private AlarmManager alarmManager;
private PendingIntent pendingIntent;
final int REQUEST_CODE=10;
SessionManager manager;
@Override
public void onReceive(Context context, Intent intent) {

    manager=new SessionManager(context);

        Log.e("ScheduleAlarmReceiver","New intent");
        Log.e("ScheduleAlarmReceiver","Service is set");
        Intent startService = new Intent(context, SampleService.class);
        startWakefulService(context, startService);

}

public void setAlarm(Context context){

    Intent intent=new Intent(context,ScheduleAlarmReciever.class);
    pendingIntent=PendingIntent.getBroadcast(context,REQUEST_CODE,intent, PendingIntent.FLAG_UPDATE_CURRENT);

    long firstMillis=System.currentTimeMillis();
    long INTERVAL_IN_MILLIS=2*60*1000; //two minutes interval
    alarmManager= (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP,firstMillis,INTERVAL_IN_MILLIS,pendingIntent);

}

} this is how i am setting the alarm alarmReciever.setAlarm(MainActivity.this);and this is my intent service class public class SampleService extends IntentService{ /** * 创建一个意图服务。由您的 subclass 的构造函数调用。 * * @param name 用于命名工作线程,仅对调试很重要。 */ AsyncHttpClient asyncHttpClient; dbUtil dbUtil; 通知管理器通知管理器; NotificationCompat.Builder mBuilder; int id=1;

public static final String API="http://customer-data.com/api/insertblevital";
public SampleService() {
    super("sampleservice");
}

@Override
public void onCreate() {
    super.onCreate();
    asyncHttpClient=new SyncHttpClient();
    dbUtil=DbUtil.getInstance(getApplicationContext());
    notificationManager= (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
}

@Override
protected void onHandleIntent(Intent intent) {

    if(0!=dbUtil.getAllData().size()) {

        mBuilder= new NotificationCompat.Builder(getApplicationContext());
        mBuilder.setContentText("Uploading data")
                .setContentTitle("Sample Upload")
                .setSmallIcon(R.drawable.ic_launcher);
        mBuilder.setProgress(0, 0, true);
        notificationManager.notify(id,mBuilder.build());
        for(int i=0;i<dbUtil.getAllData().size();i++){
            Log.e("Sample email",dbUtil.getAllData().get(i).getEmail());
        }
        ArrayList<Sample> sampleArrayList = dbUtil.getAllData();

        for (Sample sample : sampleArrayList) {


            postData(sample);
        }
        mBuilder.setContentText("upload Complete");
        mBuilder.setProgress(0, 0, false);
        notificationManager.notify(id,mBuilder.build());
    }
}

public void postData(Sample sample){
    RequestParams requestParams=new RequestParams();
    requestParams.add("email",sample.getEmail());
    requestParams.add("Name",sample.getName());
    requestParams.add("Height",sample.getHeight());
    requestParams.add("Gender",sample.getGender());

    asyncHttpClient.post(API,requestParams,new PostResponseHandler(sample.getEmail()));
}

public class PostResponseHandler extends TextHttpResponseHandler{

    String email;

    public PostResponseHandler(String email){
        this.email=email;
    }
    @Override
    public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

        Log.e("failure","failure");
    }

    @Override
    public void onSuccess(int statusCode, Header[] headers, String responseString) {

        Log.e("responseString",responseString);
        ArrayList<String> stringArrayList=new ArrayList<>();

        stringArrayList.add(email);
        dbUtil.UpdateFlag(stringArrayList);
    }
}

} `

触发服务的警报管理器是执行此操作的正确方法。为什么要使用 for 循环?