2013-08-20 5 views
4

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

  • уведомление является GCM уведомление, которое retrived из БД

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

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 
} 

ответ

6

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 
} 
Смежные вопросы