PendingIntent和Notification Intent

时间:2013-10-15 14:38:19

标签: android android-intent android-pendingintent

我发现下面的代码是多余的。我错过了一些基本的东西吗?有没有办法在这里减少重复的代码。我可以使用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);

2 个答案:

答案 0 :(得分:1)

不,你需要两者。 PendingIntentIntent的包装器。如果没有PendingIntent,您就不能拥有Intent。并且您无法在Intent中添加Notification。如果要将PendingIntent移交给另一个组件,则需要使用Intent,以便其他组件可以为您发送Intent(作为一种“代理”)在未来的某个时刻。

答案 1 :(得分:1)

正如文档中的解释

http://developer.android.com/reference/android/app/PendingIntent.html#getActivity%28android.content.Context,%20int,%20android.content.Intent,%20int%29

"检索将启动新活动的PendingIntent,例如调用Context.startActivity(Intent)"所以你需要PendingIntent和Intent。