Запустить IntentService несколько раз Android

Я работаю над проектом Android и пытаюсь найти способ улучшить следующий код. Мне нужно знать, нормально ли, как я это разработал, или нет:

  • Уведомление - это уведомление GCM, полученное из БД.

Мой вопрос касается службы намерений, которую я звоню несколько раз. Это нормально? Как это улучшить?

while (((notification)) != null)
{{
    message = notification.getNotificationMessage();
    //tokenize message
    if ( /*message 1*/) {
         Intent intent1= new Intent(getApplicationContext(),A.class);
         intent1.putExtra("message1",true);
         startService(intent1);
    } else
    {
         Intent intent2= new Intent(getApplicationContext(),A.class);
         intent2.putExtra("message2",true);
         startService(intent2);
    }
}
//retrieve next notification and delete the current one
}

1 ответ

Решение

IntentService предназначен для асинхронного использования в рабочем потоке. Так что нет ничего плохого в том, чтобы называть его несколько раз, если это необходимо. Намерения будут выполняться один за другим в потоке.

Я предполагаю, что у вас есть класс, производный от IntentService и его onHandleIntent() переопределены. Единственное улучшение Я вижу, что вам не нужно создавать два отдельных намерения - это в основном одно и то же намерение с разными дополнениями. Вы можете различить эти два в onHandleIntent().

Итак, ваш код должен выглядеть так:

while (notification != null)
{
   Intent intent= new Intent(getApplicationContext(),A.class);
   message = notification.getNotificationMessage();

   if (msg1 condition) {
      intent.putExtra("message1",true);
   } else {
      intent.putExtra("message2",true);
   }

   startService(intent);

   //retrieve next notification and delete the current one
}
Другие вопросы по тегам