1

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

2 回答 2

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。

于 2013-10-16T14:25:30.620 回答
1

不,你需要两者。APendingIntent是围绕 a 的包装器Intent。你不能没有 aPendingIntentIntent包装。而且您不能将Intenta放入Notification. PendingIntent当您想将 a 移交给另一个组件时,您需要使用 a Intent,以便其他组件可以Intent在将来的某个时间为您发送(作为一种“代理”)。

于 2013-10-16T13:43:07.290 回答