Android:使用Context.startService和PendingIntent.getService启动服务

Met*_*urf 15 android android-intent android-context android-pendingintent

Context.startService

Intent intent = new Intent(context, MyService.class);
context.startService(intent);
Run Code Online (Sandbox Code Playgroud)

PendingIntent.getService

Intent intent = new Intent(context, MyService.class);
PendingIntent pi = PendingIntent.getService(context, 0, intent, 0);
pi.send();
Run Code Online (Sandbox Code Playgroud)


问题

  1. 您何时可以使用Context.startService与PendingIntent启动服务?
  2. 你为什么要用另一个呢?

Jox*_*aex 19

确实没有区别.

具体来说,Context方法用于直接启动它,因为PendingIntent通常与一个通知一起使用,以便在点击它时触发此意图,该意图被延迟直到用户点击它(通常).然而; 你通常不会直接发送PendingIntent,因为那不是它的用途.

PendingIntent是一个待处理的待处理意图,意味着它现在应该发生,但在不久的将来.而对于Intent,它会在此刻发送.

如果PendingIntent在使用时没有挂起,那么它不再是PendingIntent,它实际上是一个Intent.彻底击败目的.

  • 如果你想在不久的将来开始服务,这将是理想的情况.假设我有一个通知,显示可用于用户帐户的新更新.理想情况下,会有一个未决的意图,它将建立与服务器的连接并下载此信息.当用户没有立即点击通知时,我希望它完成,这样我等待用户的方便,或者如果用户不在乎他们可以取消通知,并且下一个新更新将以相同的方式做出反应. (2认同)