2016-12-21 2 views
-2

확실히 앱을 닫으면 의 runInBackGround 메소드가 작동을 멈춘다는 점에 유의했습니다. 액티비티가 STOP 또는 PAUSE 단계에있을 때 작동하지만 앱을 닫으면 메서드가 완료됩니다 (주기가 while(true) {...} 인 루프). 예를 들어 Whatsapp는 알림을 보내도 어떻게 닫을 수 있습니까? 나는 비슷한 것을 만들고 싶다. 감사!Android : 앱이 완전히 닫힌 경우 앱 실행

답변

0

앱을 닫으면 모든 코드 실행이 중지됩니다. 앱이 열려있는 상태에서 실행하고 앱이 종료 된 상태에서 코드를 계속 실행하려는 경우 using a Service.

서비스 설명서를 자세히 살펴보면 원하는 내용이 될 것입니다. . 앱이 닫히면 서비스가 종료되지만 START_STICKY 반환 값을 사용하면 종료시 서비스가 다시 시작될 수 있습니다. 더 많은 정보

편집 :

<service 
    android:name="MyService" /> 

당신의 AndroidManifest.xml

public class MyService extends Service { 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
      // This is where you would place your code that you want in the background 
      // Putting your while loop here will make sure it runs when the app is closed 
      return Service.START_STICKY; 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     //TODO for communication return IBinder implementation 
    return null; 
    } 
} 

에 위의 추가는 위의 코드와 함께 새로운 클래스를 만듭니다.

Intent i= new Intent(context, MyService.class); 
startService(i); 

런처 Activity에서이 코드를 호출하면 앱이 시작될 때 서비스가 시작됩니다.

희망이 도움이됩니다.

+0

어떻게이 START_STICKY를 사용할 수 있습니까? – Tosch

+0

@Tosch 내 편집 된 게시물보기 –

+0

감사합니다. 내 문제를 해결했습니다. – Tosch

0

Asynctask는 백그라운드에서 수행해야하는 짧은 작업에 이상적입니다. 일반적으로 Asyntask는 응용 프로그램이 닫힐 때 파괴되는 활동의 하위 클래스로 구현됩니다. 또한 일부 지점에서 UI 스레드와 통신하므로 ... 메모리에 활동이 필요합니다. 장기간 실행하는 경우 서비스가 더 좋습니다. 일부 앱은 사용자가 실행 중이 아니더라도 사용자에게 알립니다. 실제로 그들은 백그라운드에서 하나 이상의 서비스가 실행 중입니다. 휴대 전화 설정 -> 응용 프로그램 메뉴에서 볼 수 있습니다. 서비스에 대한 자세한 내용은 this을 참조하십시오.