android如何限制应用程序启动另一个intentservice

时间:2016-04-07 06:37:40

标签: android alarmmanager intentservice

我有一个应用程序,我检查每十五分钟是否有互联网。

如果有互联网,我会启动一项意向服务,将数据从数据库上传到服务器。

      @Override
    public void onReceive(Context context, Intent intent) {

        if(CommonClass.isNetworkAvailable(context)) {
            Intent startService = new Intent(context, VitalUploadService.class);
            startWakefulService(context, startService);
        } else {
            Toast.makeText(context,"Please Turn on Internet to save data to cloud",Toast.LENGTH_LONG).show();
        }
    }

我的问题是,如果数据上传延长了十五分钟,那么我该如何阻止代码生成另一个意图服务以发送数据。 我正在使用 wakefulBroadCastReceiver。

1 个答案:

答案 0 :(得分:0)

简单的解决方案(在我看来)是使用一些golbal / public flag:

1-你在应用程序中声明一个变量(或者在其他可以轻松访问的地方)。

2-将其初始化为false(标志变量是我样本中的布尔值)

3-并在您的代码中:

public Boolean _bIsServiceLanched = false;//Flag variable declaration in application class for example

if(CommonClass.isNetworkAvailable(context)) {

   if_b(getApplicationContext()._bIsServiceLanched == false) {
      getApplicationContext()._bIsServiceLanched = true; 
      Intent startService = new Intent(context, VitalUploadService.class);
      startWakefulService(context, startService);
   }


} else {
    Toast.makeText(context,"Please Turn on Internet to save data to cloud",Toast.LENGTH_LONG).show();
}