20分钟后,应用在某些Android Oreo手机上被杀死

时间:2018-08-03 10:37:40

标签: android android-8.0-oreo android-8.1-oreo

我正在测试我的应用程序,发现它在某些设备上(仅在OREO设备上)被操作系统杀死(在Samsung S8上完全没有问题,但在Huawei Y7 Prime上,当我打开它时应用程序正在重新启动关闭屏幕超过20分钟后再次出现..请注意,以防万一我在不等待几分钟的情况下直接打开应用程序,则该应用程序将正常打开)

我还执行了一些日志记录,以识别何时以及为何破坏活动,但是由于在这种情况下没有写入日志,所以运气不佳。另外,我在主要活动上添加了以下代码,该代码在很短的时间内就可以工作(按应用程序图标会首先在某些设备上重新启动该应用程序,但已使用下面的代码在主要活动的onCreate函数中进行了修复)

if (!isTaskRoot()) {
            final Intent intent = getIntent();
            final String intentAction = intent.getAction();
            if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && intentAction != null && intentAction.equals(Intent.ACTION_MAIN)) {

                isTaskRootEntered = true;
                finish();
            }
        }
我错过了什么吗?请任何有关如何解决此问题的帮助。

重要说明::我保留了一个前台服务,该服务可检索用户的位置并将其保存在数据库中。该服务具有粘性通知,并且可以正常运行,直到离开超过20分钟为止(仅限于像华为这样的某些设备)

我正在通过以下方式启动前台服务:

 GVGPSServiceIntent = new Intent(context, GTMStarterService.class);
     if(Build.VERSION.SDK_INT >= 26){
        context.startForegroundService(GVGPSServiceIntent);
    }
    else context.startService(GVGPSServiceIntent);

服务看起来像这样

 public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);
        return START_STICKY;
    }
 @Override
    public void onCreate() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            Notification notification = updateNotificationContent();
            startForeground("SendingPrcs".hashCode(), notification);
        }
    }

 @Override
    public void onDestroy() {
        super.onDestroy();

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        if (notificationManager != null) {
            notificationManager.cancel("SendingPrcs".hashCode());
        }
    }

0 个答案:

没有答案