2012-10-20 4 views
0

Smsreciever를 등록하는 서비스를 작성했으며 항상 백그라운드에서 작업합니다. 또한, 나는 프로그램을 사용하지 않는 동안 나의 주요 활동이 백그라운드에서 작동하는 것을 막고 싶다. 일반적으로이 작동하지만 때로는 내 활동이 시작 받았다 SMS 후 배경에서 실행, 내가 막을 수있는 방법, 배터리 소모의 원인 당신이 무엇을하고 있는지에 대한안드로이드는 백그라운드에서 작업하지 못하도록합니다.

public void onCreate() 
{ 
    ... 

    startService(new Intent(this,ServiceCommunicator.class)); 

    ... 
}    

public void onBackPressed() { 

    super.onBackPressed(); 
    android.os.Process.killProcess(android.os.Process.myPid()) ; 

     } 

답변

0

몇 가지 메모 :

  1. 을 귀하의 프로세스를 죽일 것을 권장하지 않습니다. 서비스를 계속하도록하십시오. "startService"를 호출하면 활동이 종료 된 후에도 계속 진행됩니다.

  2. 백그라운드 서비스는 시스템이 메모리를 필요로한다고 생각할 때마다 정의상 죽을 수 있습니다. SMS 이벤트를 놓치지 않으려면 서비스를 포 그라운드에서 실행하십시오.

  3. 서비스 및 CPU 사용량이 많을수록 OS를 죽일 확률이 높아집니다. 서비스는 가능한 한 라이트해야하며 오랜 시간 동안 많은 작업을한다면 전경에 있어야합니다.

  4. 활동이 많은 CPU를 사용하는 경우 두 프로세스가 모두 동일한 프로세스에 속하기 때문에 서비스를 닫을 때 서비스가 닫힐 수도 있습니다. 매니페스트를 통해 서비스 프로세스를 변경할 수 있습니다.

+0

감사합니다. 이렇게 변경했습니다. 그러나 궁금합니다. 내 프로세스를 죽일 때 배터리를 사용하지 않고 모든 것을 닫습니다. 내가 모든 활동을 마치면 똑같은가요? – user1685802

+0

프로세스를 종료하면 서비스를 포함하여 모든 응용 프로그램이 포함됩니다 (다른 프로세스에 속하도록 설정하지 않은 경우). 그러나, 귀하의 응용 프로그램이 많은 CPU/배터리를 사용하는 이유를 알기 위해서는 몇 가지 코드가 필요합니다 ... 활동을 마치면 정지 상태입니다. 코드에서 이상한 일을하지 않으면 CPU를 사용하지 않습니다. –