Запустить 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
}