2016-09-07 2 views
2

활동에서 서비스를 시작했습니다. 활동을 닫으면 활동 서비스도 멈추고 있습니다.어떻게 안드로이드에서 서비스를 다시 시작 하시겠습니까?

자동으로 다시 시작할 수있는 방법이 있습니까?

+0

* "강제로 활동을 종료하면"* ... 어떻게 이것을 정확히 수행하고 있습니까? – Shaishav

+1

예, 할 수 있습니다. 이것을 확인하십시오 : http://stackoverflow.com/questions/15758980/android-service-need-to-run-alwaysnever-pause-or-stop/15775964#15775964 알림 부분을 할 필요가 없습니다 –

+0

에 의존합니다. 다시 시작할 때 * 자동 *. –

답변

1

서비스를 백그라운드에서 중단하지 않고 실행하려면 서비스를 끈적 거리지 않게 시작하십시오. 응용 프로그램을 열 때까지

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    /* your code goes here */ 
    return START_STICKY; 
} 
+0

내 경험에 바탕을 둔다. START_STICKY 서비스가 자동으로 다시 시작되는 것을 보장하지 않습니다. 내 사건은 사용자가 장치에서 홈 버튼을 클릭 할 때입니다. 그런 다음 사용자는 페이스 북 (예 : whatsapp)과 같은 다른 앱을 1 분 동안 사용합니다. 그런 다음 사용자가 앱을 열면 이미 서비스가 START_STICKY을 (를) 사용했지만 이미 사라졌습니다. – Dika

0
private void restartService() { 
    Intent restartIntent = new Intent(this, ScreenLockService.class); 
    PendingIntent restartServicePI = PendingIntent.getService(getApplicationContext(), 1, restartIntent, PendingIntent.FLAG_ONE_SHOT); 
    AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
    alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() + 1000, restartServicePI); 
} 
0

이 최악의 문제는, 무슨 일이 있어도 .. 당신이 서비스를 재시작 할 수 없습니다. 그러나 API 21 안드로이드 개발자는 백그라운드 서비스를 유지하기 위해 Job Schedular을 추가했습니다. 이를 사용하여 시간 및 인터넷 연결 등에 관한 서비스를 예약 할 수 있습니다.

자세한 내용은 tutorial을 참조하십시오. 행복한 코덱.

관련 문제