0

백그라운드에서 위치 업데이트를 정말 빨리해야하는 애플리케이션을 작성하고 있습니다. 따라서 필자는 필요한 결과를 얻기 위해 서비스를 작성했습니다.LocationListener가 안드로이드 서비스에서 언젠가 후에 업데이트를 제공하지 않습니다.

활동의 onCreate() 메소드에서 서비스를 시작하고 있습니다.

내가 직면 한 문제는 서비스가 활성화 된 시점으로부터 약 20 ~ 30 초 동안 위치 업데이트를 제공 할 수 있다는 것입니다. 그런 다음 업데이트가 없습니다.

public class MyLocService extends Service 
     implements 
     LocationListener{ 

    private final LocationListener locationListener = this; 

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 

     Handler handler = new Handler(Looper.getMainLooper()); 
     Runnable runnable = new Runnable() { 
      @Override 
      public void run() { 
       if (checkPermission()) { 
        manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); 

        manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); 
        manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
       } 
       else{ 
        //Request Permission 
        Intent permissionIntent = new Intent(); 
        permissionIntent.setAction(LOCATION_PERMISSION_REQUIRED); 
        sendBroadcast(permissionIntent); 
       } 
       Looper.loop(); 
      } 
     }; 

     handler.post(runnable); 

     //Create notification nad run in foreground 
     startForeground(
       NotificationCreator.getNotificationId(), 
       NotificationCreator.getNotification(context) 
     ); 

     return Service.START_STICKY; 

} 

@Override 
public void onLocationChanged(Location location) { 
    Log.d("LocUpdate", location.getLatitude() + " : " + location.getLongitude()); 
} 

내가 좋아하는 활동에서 서비스를 시작할 때마다 : 여기

서비스에 대한 코드입니다

Intent intent = new Intent(this, MyLocService.class); 
startService(intent); 

내가 20 ~ 30 초 동안 onLocationChange()에서 업데이트를 .

또 다른 관찰은 : (내가 서비스를 열고 시작하는 곳에서) 활동을 유지하면 위치 업데이트를 계속합니다. 그러나 활동을 종료하거나 앱을 종료하고 배경에서 서비스 (단독)가 실행되도록 허용하면 내 화면 상단에 알림이 표시되어 서비스가 실행 중이지만 위치 업데이트를받지 못합니다.

내가 뭘 잘못하고 있니?

+0

실행중인 앱 목록에서 실행중인 서비스를 볼 수 있습니까? 휴대 전화가 서비스를 실행할 수 있습니까? 일부 휴대 전화 ROM은 기본 START_STICKY가 서비스가 종료되면 다시 시작하도록 허용하지 않습니다. –

+0

예. 서비스가 실행되는 것을 볼 수 있습니다. 나는 redmi note 4에서 marshmallow를 테스트 중입니다. 나가는 길은 무엇입니까? – Priyabrata

+0

MIUI는 기본적으로 MIUI가 서비스를 다시 시작하지 못하게하기 때문에 redmi note 3에 문제가있었습니다. 이것을 시도하고 설정> 권한> 자동 시작>으로 가서 응용 프로그램이 자동 시작 –

답변

1

문제를 해결했습니다. miui에서 배터리 최적화 기능을 해제하거나 앱을 예외로 추가하십시오. 코드가 완벽하게 작동합니다.

관련 문제