我发现下面的代码是多余的。我错过了一些基本的东西吗?有没有办法在这里减少重复的代码。我可以使用Intent或PendingIntent对象,为什么两者都有?
Intent updateUI = new Intent(SENDTOBACKGROUND_SERVICE);
updateUI.putExtra("Signal", God.YELLOW);
sendBroadcast(updateUI);
Intent sendNotification = new Intent(DriverService.this, DriverHome.class);
sendNotification.putExtra("Signal", God.YELLOW);
PendingIntent pIntent = PendingIntent.getActivity(getApplicationContext(), 0, sendNotification, PendingIntent.FLAG_UPDATE_CURRENT);
Notification n = new NotificationCompat.Builder(DriverService.this)
.setContentTitle("Attempting to update location")
.setContentText("Cab @(last) " + currentLocationInText)
.setSmallIcon(R.drawable.yellow).setContentIntent(pIntent).setAutoCancel(true)
.build();
((NotificationManager) DriverService.this.getSystemService(NOTIFICATION_SERVICE)).notify("Taxeeta", R.id.cabLocation, n);
答案 0 :(得分:1)
不,你需要两者。 PendingIntent
是Intent
的包装器。如果没有PendingIntent
,您就不能拥有Intent
。并且您无法在Intent
中添加Notification
。如果要将PendingIntent
移交给另一个组件,则需要使用Intent
,以便其他组件可以为您发送Intent
(作为一种“代理”)在未来的某个时刻。
答案 1 :(得分:1)
正如文档中的解释
"检索将启动新活动的PendingIntent,例如调用Context.startActivity(Intent)"所以你需要PendingIntent和Intent。