2013-10-15 2 views
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); 
+1

PendingIntent позволяет запускать ваш код с вашими разрешениями в другом приложении, которое, возможно, не имеет таких разрешений. – Kuffs

ответ

1

Нет, вам нужны оба. A PendingIntent - обертка вокруг Intent. У вас не может быть PendingIntent без обертывания Intent. И вы не можете поставить Intent в Notification. Вам нужно использовать PendingIntent, если вы хотите передать Intent другому компоненту, чтобы другой компонент мог отправить Intent для вас (как своего рода «прокси») в какой-то момент в будущем.

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 и Намерение.

+1

как знак благодарности за хороший ответ, у меня есть еще +1 ваш ответ. Я принял ответ Дэвида, так как он ответил раньше. – taxeeta

Смежные вопросы