2011-02-01 2 views
0

Android로 다시 부팅하면 모든 AlarmManagers가 삭제되고 다시 제작해야한다는 내용을 읽었습니다. 그래서 나는 그렇게 같은 WakefulIntentService를 호출하여 내 모든 경보를 다시 시작하는 BootReciever 클래스 생성 : - 매니페스트에부팅 후 Reciever가 호출되지 않고 RecieverHandler가 있고 데이터가 있습니까?

public class BootReciever extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     Log.v("MessageDelay", "Reboot message Recieved"); 

     try { 

      WakefulIntentService.sendWakefulWork(context, BootSetter.class);  


      } catch (Exception e) { 
      Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show(); 
      e.printStackTrace(); 

      } 

    } 
} 

내가 선언을하고 부팅과 같이 완료 될 때 만 실행되도록 의도 필터를 넣어 : -

<receiver android:name=".BootReciever"> 
     <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
     </receiver> 

지금이들이 의도대로 작동하지 않는 문제를 해결하기 위해 노력하고 내 머리를 찢어 후, 나는 그것이 있어야로 내 BootReciever 클래스가 부팅 후에 호출되지임을 깨닫고 있습니다. 대신 RecieverHandler라는 다른 클래스가 모든 것에 호출됩니다. 좀 더 수수께끼 같은 것은 시작시 내 RecieverHandler에 전달 된 의도가 실제로 오류없이 사용할 수있는 유효한 데이터를 가지고 있다는 것입니다.

내 RecieverHandler는 다음과 같다 : -

public class RecieverHandler extends BroadcastReceiver 
{ 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 

     try { 

      Bundle bundle = intent.getExtras(); 

      Log.v("MessageDelay", "RecieverHandler is doing boot jobs"); 

      Intent newIntent = new Intent(context, MessageDispatcher.class); 
      newIntent.putExtras(bundle); 
      // newIntent.addFlags(Intent.FLAG); 
      //context.startService(newIntent); 
      WakefulIntentService.sendWakefulWork(context, newIntent);  


      } catch (Exception e) { 
      Toast.makeText(context, "There was an error somewhere, but we still received an alarm", Toast.LENGTH_SHORT).show(); 
      e.printStackTrace(); 

      } 


    } 
} 

과 같이 매니페스트에 선언 : 또 다른 상황에서 괜찮을 수도 있지만

<receiver android:name=".RecieverHandler"> 
     </receiver> 

내가 다른 Recievers이 필요합니다 전화가 켜져 있고 전화가 부팅되었습니다.

요약하면 myquestions은 다음과 같습니다 : -

왜 RecieverHandler가 부팅 다루고는 의도을 완료하고 내 BootReciever가 호출되고 있지 않습니다?

재부팅하기 전에 의도 한 데이터 세트가 재부팅 후에도 유효 할 수 있습니까?

SMS 보내기 기능이 준비 될 때까지 모든 작업을 지연시키는 방법입니까?

답변

관련 문제