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 보내기 기능이 준비 될 때까지 모든 작업을 지연시키는 방법입니까?