android– 前景服务在通知点击时被杀死

android– 前景服务在通知点击时被杀死,第1张

概述在Android 4.4.2中,单击我的Foreground Service通知会终止我的进程.在较旧的设备上(Samsuing Tab 2运行4.2.2),我可以从最近的任务中删除活动,并且仍然可以在后台运行我的服务.然后,当我点击通知时,我的应用程序活动再次开心.但是,一旦我点击运行4.4.2的Nexus 7上的通知,我的进程就会被终止(直到点击在后台运

在Android 4.4.2中,单击我的Foreground Service通知会终止我的进程.

在较旧的设备上(Samsuing Tab 2运行4.2.2),我可以从最近的任务中删除活动,并且仍然可以在后台运行我的服务.然后,当我点击通知时,我的应用程序活动再次开心.

但是,一旦我点击运行4.4.2的Nexus 7上的通知,我的进程就会被终止(直到点击在后台运行得很快). PendingIntent似乎根本没有触发,或者至少它没有触及broadcastReceiver的第一行:

05-21 16:17:38.939: I/ActivityManager(522): Killing 2268:com.test.student/u0a242 (adj 0): remove task

我已经通过this回答,并使用命令dumpsys activity proccesses我已经确认我的服务正在前台正确运行.

那么,点击这个杀死我的进程的通知又是什么呢?

将服务移至前台所涉及的代码如下:

服务:

@OverrIDepublic 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);}
最佳答案将FLAG_RECEIVER_FOREGROUND标志添加到您的通知中使用的PendingIntent,以便允许服务以Foreground优先级运行.

Intent newIntent = new Intent(context,broadcastToOrderedbroadcast.class);newIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);return PendingIntent.getbroadcast(NativeService.getInstance(),PendingIntent.FLAG_UPDATE_CURRENT);

以下是此信息的来源:Android Issue Tracker tool. 总结

以上是内存溢出为你收集整理的android – 前景服务在通知点击时被杀死全部内容,希望文章能够帮你解决android – 前景服务在通知点击时被杀死所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1140483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存