我读过,当你用Android重新启动时,所有的AlarmManagers都会被删除,并且需要重新制作。所以,我创建了一个BootReciever类,将通过调用WakefulIntentService像这样重新启动我的所有报警: -启动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>
现在撕裂我的头发试图解决的问题与此不工作作为intented后,我已经认识到,我的BootReciever类没有被启动后调用所应当。相反,我的另一个名为RecieverHandler的类正在被调用。更令人费解的是,启动时传递给我的RecieverHandler的Intent实际上具有可以无误地使用的有效数据。
我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永远不会被调用?
在重新引导后重新启动前Intent数据设置仍然有效的方式吗?
他们的方式是延迟任何操作,直到设备的SMS发送功能准备就绪?