后台服务在android睡眠模式下无法工作

5cg8jx4n  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(430)

在我的android应用程序中,我每天下午5点跟踪用户位置,并将该位置发送到服务器。为此,我运行一个服务。但我的问题是,如果应用程序处于前台模式,服务就会启动。但如果应用程序处于后台模式超过10分钟或下一个日期。则服务未启动。下面是我的服务启动代码。

Log.d("Service log","service will start");
if( (ContextCompat.checkSelfPermission(context, 
           Manifest.permission.ACCESS_FINE_LOCATION)) == 
                    PackageManager.PERMISSION_GRANTED){
Intent backgnd = new Intent(context, BackgrndService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
try{ 
  Log.d("Service log","service starting in oreo");
                             context.stopService(backgnd);
                           context.startForegroundService(backgnd);}
                           catch(Exception e){
                              context.startForegroundService(backgnd);
                           }
                        }else {

                           try{ 
                           Log.d("Service log","service start");
                             context.stopService(backgnd);
                           context.startService(backgnd);}
                           catch(Exception e){
                              context.startService(backgnd);
                           }
                        }
                    }else{
                        Log.d("Service log","NO Access Location permission");
                    }

在logcat中,我可以看到第一个日志,但其他日志没有显示。请提供如何在后台模式(睡眠模式)下运行该服务的建议。

tvmytwxo

tvmytwxo1#

android操作系统时不时地杀掉后台服务,以节省资源(能源)。所以要避免把它作为前台服务。我会为服务创建一个通知,并指出它是前台(这有两个好处,操作系统不会杀死你的服务,用户也不会试图杀死正在运行的应用程序)。

相关问题