Intereting Posts
Студия Android не перечисляет мой телефон в разделе «Выбрать устройство», Gradle и proguard: не удалось найти метод runProguard () для аргументов Ярлык для переключения между дизайном и текстом в студии Android Использование blobstore с конечной точкой Google и Android Как удалить границу / тень с кнопок леденца Что такое Android PendingIntent? Как использовать один источник библиотеки для нескольких проектов Выбор файла изображения из галереи с помощью FileProvider Как захватить новый Intent в onNewIntent ()? Можем ли мы установить ОС Android на любой Windows Phone и наоборот, а также с iPhone и наоборот? Консоль Eclipse показывает: «Не удалось нажать выделение: файловая система только для чтения», когда я пытаюсь нажать файл Как установить размер рисунка в списке слоев Панель инструментов Android appcompat растягивается, когда searchview получает фокус GetExternalFilesDir () возвращает значение null (а не разрешение) Android ClassNotFoundException: не нашел класс на пути

Android: запуск службы с помощью Context.startService vs PendingIntent.getService

Context.startService

Intent intent = new Intent(context, MyService.class); context.startService(intent); 

PendingIntent.getService

 Intent intent = new Intent(context, MyService.class); PendingIntent pi = PendingIntent.getService(context, 0, intent, 0); pi.send(); 

Вопросов

  1. Когда вы начнете сервис с Context.startService и PendingIntent?
  2. Почему вы используете один над другим?

Solutions Collecting From Web of "Android: запуск службы с помощью Context.startService vs PendingIntent.getService"

Там нет никакой разницы.

В частности, метод Context используется для непосредственного запуска его, когда как правило PendingIntent обычно используется с уведомлением, чтобы запустить это намерение, когда он прослушивается, который задерживается до тех пор, пока пользователь не удалит его (как правило). Однако; Вы обычно не отправляли PendingIntent напрямую, потому что это не то, для чего оно предназначено.

A PendingIntent – это намерение, ожидающее, ожидающее рассмотрения, что означает, что его НЕ должно произойти сейчас, но в ближайшем будущем. В то время как с намерением, он отправляется в самый момент.

Если PendingIntent не находится в ожидании, когда он используется, то он больше не является PendingIntent, и он преследует Intent. Преодоление цели целиком .

PendinIntents очень используются для виджетов. Поскольку макет работающего виджета не «принадлежит» вашему коду, но он находится под контролем системы, вы не можете назначать непосредственно клики для элементов интерфейса. Вместо этого вы назначаете PendingIntent этим элементам (например, кнопкам), поэтому, когда пользователь прикасается к ним, PendingIntent «выполняется», что-то вроде:

 // get the widget layout RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.id.widget_layout); // prepare to listen the clicks on the refresh button Intent active = new Intent(context, WidgetCode.UpdateService.class); PendingIntent refreshPendingIntent = PendingIntent.getService(context, 0, active, 0); remoteViews.setOnClickPendingIntent(R.id.buttonWidgetRefresh, refreshPendingIntent); // send the changes to the widget AppWidgetManager.getInstance(context).updateAppWidget(appwidgetid, remoteViews); 

В этом случае кнопка виджета запускает сервис. Обычно вы добавляете дополнительную информацию в намерение с помощью putExtras (), поэтому служба получит любую необходимую информацию для выполнения своей работы.