In Android 4.4.2 facendo clic sulla notifica del servizio in primo piano si sta uccidendo il processo.Il servizio in primo piano viene ucciso nella notifica fare clic su
Su dispositivi più vecchi (scheda Samsuing 2 in esecuzione 4.2.2), è possibile far scorrere l'attività da Attività recenti e mantenere il mio Service
correttamente in esecuzione in background. Quindi quando clicco sulla Notification
la mia app Activity
ricomincia abbastanza felicemente.
Tuttavia, dopo aver fatto clic su Notifica sul mio Nexus 7 in esecuzione 4.4.2, il processo viene interrotto (fino a quando il clic non viene eseguito in background felicemente). Il PendingIntent
non sembra di sparare a tutti, o almeno, non colpisce la prima riga del BroadcastReceiver
:
05-21 16:17:38.939: I/ActivityManager(522): Killing 2268:com.test.student/u0a242 (adj 0): remove task
Ho eseguito attraverso this risposta, e utilizzando il comando dumpsys activity proccesses
ho ha confermato che il mio servizio è in esecuzione in primo piano correttamente.
Quindi, cosa si tratta di fare clic su questa notifica che sta uccidendo il mio processo?
Codice coinvolti nello spostamento del servizio al primo piano segue:
Servizio:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("NativeWrappingService", "Starting Service...");
startForeground(NotificationIcon.NOTIFICATION_STUDENT, NotificationManager.getStudentIcon(this).getNotification());
return super.onStartCommand(intent, flags, startId);
}
NotificationIcon: (getStudentIcon(this).getNotification()
)
public Notification getNotification() {
Builder mBuilder = new Builder(mContext);
if(mSmallIcon != -1) mBuilder.setSmallIcon(mSmallIcon);
if(mLargeIcon != null) mBuilder.setLargeIcon(mLargeIcon);
if(mTitle != null) mBuilder.setContentTitle(mTitle);
if(mSubTitle != null) mBuilder.setContentText(mSubTitle);
if(mSubTitleExtra != null) mBuilder.setContentInfo(mSubTitleExtra);
mBuilder.setOngoing(mOngoing);
mBuilder.setAutoCancel(mAutoCancel);
mBuilder.setContentIntent(getPendingIntent(mContext, mAction, mBundle, mActivity));
return mBuilder.build();
}
private PendingIntent getPendingIntent(Context context, String action, Bundle extras, String activity) {
Intent newIntent = new Intent(context, BroadcastToOrderedBroadcast.class);
Bundle bundle;
if(extras != null) bundle = extras;
else bundle = new Bundle();
if(activity != null && !activity.equalsIgnoreCase("")) {
BundleUtils.addActivityToBundle(bundle, activity);
}
BundleUtils.addActionToBundle(bundle, action);
newIntent.putExtras(bundle);
return PendingIntent.getBroadcast(NativeService.getInstance(), mNotificationID, newIntent, PendingIntent.FLAG_UPDATE_CURRENT);
}
Si tratta di un bug noto che viene monitorato [qui] (https://code.google.com/p/android/issues/detail?id=53313). Puoi provare la soluzione elencata in [commento # 7] (https://code.google.com/p/android/issues/detail?id=53313#c7). –