34

Does startService() create a new Service instance or using the existing one? For example, in the following code, does it create two UpdateService instances or just one UpdateService instance? Thanks.

    int[] appWidgetIds = new int[] {1, 2};  
    for (int appWidgetId : appWidgetIds) {
        Intent intent = new Intent(context, UpdateService.class);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        context.startService(intent);
    }
user256239
  • 17,717
  • 26
  • 77
  • 89

2 Answers2

58

If the service is already started, it does not start as second copy, but onStart() is still called on the existing instance. Services are natural singletons -- there is exactly 0 or 1 copy of the service in operation.

CommonsWare
  • 986,068
  • 189
  • 2,389
  • 2,491
  • Thanks @CommonsWare I upvoted your question, every time I see your answer, its most easier to understand and I found helpful and upvote your answer :) – blackHawk Aug 25 '17 at 09:02
15

The onStart method is deprecated for now, use onStartCommand instead.

Roger Alien
  • 3,040
  • 1
  • 36
  • 46