2010-05-12 3 views
2

자동 시작 후에 응용 프로그램을 올바르게 초기화하는 데 문제가 있습니다.Android : 자동 시작 응용 프로그램 및 기본 설정로드

자동 시작 기능을 사용하여 재부팅 한 후 앱이 시작된 것으로 표시되지만 타이머는 작동하지 않습니다. 내 생각 엔 context.startService()를 호출하면 MyApp의 "onCreate"함수가 호출되지 않는다고 생각합니다. 타이머는 MyApp의 doActivity() 함수에서 설정됩니다.

나는 잘못된 튜토리얼이나 잘못된 튜토리얼 링크에 대해 조언 해 주시면 감사하겠습니다. :)

매니페스트 :

<activity android:name=".MyApp" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver android:name="MyApp_Receiver"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
    </receiver>[/syntax] 

MyApp_Receiver

public void onReceive(Context context, Intent intent) { 
    // Do Autostart if intent is "BOOT_COMPLETED" 
    if ((intent.getAction() != null) && (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))) 
    { 
     // Start the service 
     context.startService(new Intent(context, MyApp.class)); 
    } 
    // Else do activity 
    else 
     MAIN_ACTIVITY.doActivity(); 
} 

public static void setMainActivity(MyApp activity) 
{ 
    MAIN_ACTIVITY = activity; 
} 

MyApp를가 PreferenceActivity를 확장 다음의 두 가지 기능을 가진 BoradcastReciever는이며에서 onCreate() 및 doActivity을 갖는다()에서 doActivity()는 환경 설정을 읽고 타이머에 따라 타이머를 설정합니다.

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Show preferences 
    addPreferencesFromResource(R.xml.preferences);; 

    // Register Preference Click Listeners 
    getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); 


    // Prepare for one-shot alarms 
    if (mIntent == null) 
    { 
     mIntent = new Intent(MyApp.this, MyApp_Receiver.class); 
     mSender = PendingIntent.getBroadcast(MyApp.this, 
       0, mIntent, 0); 
     MyApp_Receiver.setMainActivity(this); 
    } 

    // Refresh and set all timers on start 
    doActivity(); 
} 

답변

3

타이머는 doActivity()의 MyApp 의 함수로 설정된다.

결코 작동하지 않습니다. MyApp은 사용자가 들어 와서 실행하기 전까지는 생성되지 않는 활동입니다.

SharedPreferencesonReceive()으로 읽고 거기에 알람을 설정하십시오.

+0

고마워요! 를 알아서 좋다. :) 구현하려고 시도합니다. 다음 문제로 왔습니다. 다음을 사용하여 환경 설정을 추가합니다. addPreferencesFromResource (R.xml.preferences); 나는 onRecieve()에서 그것들을 읽을 수 있도록 이름이 붙어있는 것처럼 보이지 않습니다. context.getSharedPreferences ("prefs_myApp", Context.MODE_PRIVATE); 정말 코드에서 XML이 아닌 XML로 생성하고 싶습니다. – BBoom

+2

'PreferenceManager.getDefaultSharedPreferences'를 사용하십시오. – CommonsWare

+0

굉장해, 고마워! 너 락. :) 이제 완벽하게 작동합니다. (충분한 평판을 얻은 경우 투표 할 수 있습니다 : P) – BBoom

관련 문제