6

我正在开发一个 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
}
4

1 回答 1

8

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
}
于 2013-08-20T15:32:00.420 回答