2013-06-05 1 views
5

안드로이드 실제 휴대 전화로 부팅 한 후 내 응용 프로그램이 실행되지 않은 이유를 알아야합니까? 내 응용 프로그램이 실행되지만 몇 초 후에 부팅됩니다.부팅 완료 후 바로 응용 프로그램을 시작해야합니다

내 코드 내 활동이 실행되지만, 부팅 몇 초 완료 후

public class AutoStart extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){ 
       Intent i = new Intent(context, MyActivity.class); 
       i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       context.startActivity(i); 
      } 
    } 

} 

입니다. 이 몇 초를 줄일 수 있습니까?

즉시 앱을 실행하고 싶습니다. 나는 사용자가 전화를 사용할 수 없도록하고 싶다.

+0

부팅 후 응용 프로그램을 실행하는 시간을 줄일 수 없습니다. 전화기의 OS는 저장소를 준비하고 부팅 완료시 설정된 응용 프로그램을 포함하여 서비스 및 프로세스를 실행합니다. 그것은 또한 전화의 메모리 (RAM)에 의존하기 때문에 시간이 걸릴 것입니다. RAM이 높을수록 응용 프로그램과 서비스가 빨리 시작됩니다. –

답변

10

우선이 될 수 있지만 여전히 약간의 지연이 있습니다. 안드로이드는 먼저 OS를로드하고 다른 모든 활동이 시작됩니다.

<receiver 
    android:name=".AutoStart" 
    android:enabled="true" 
    android:exported="true" 
    <intent-filter android:priority="1000"> 
     <action android:name="android.intent.action.BOOT_COMPLETED" /> 
    </intent-filter> 
</receiver> 
+0

그래서 가능한 가장 높은 우선 순위는 무엇입니까? 다른 응용 프로그램이 동일한 우선 순위를 갖는다면이 플래그가 쓸모 없지 않은 것입니까? – HendraWD

+2

값은 "100"과 같은 정수 여야합니다. 숫자가 높을수록 우선 순위가 높아집니다. 기본값은 0입니다.이 값은 https://developer.android.com/guide/topics/manifest/intent-filter-element.html에서 -1000보다 크고 1000보다 작아야합니다. – HendraWD

1

Android 시스템은 부팅시 많은 작업이 완료되었습니다. 따라서의도가 지연 될 수 있습니다. 전화 기능에 따라 의도 지연 시간이 달라집니다.

관련 문제