我有两个小问题;当BroadcastReceiver被调用时,应用程序崩溃
我的应用程序的广播接收器的工作原理应用程序运行时很好,我得到了“周二2”烤面包的消息完全与它更新的应用程序,但是当我关闭我的应用程序,这意味着应用程序停止运行,它不会被调用,而是会崩溃“你的应用程序停止工作”,所以它知道它应该调用它,但不是,对吧?
似乎BroadcastReceiver每天在下午2点左右打电话,不仅在星期二下午2点,我希望应用程序每周更新一次。这可能是因为我在UpcomingFragment的onCreate上调用了setAlarm()方法?
在UpcomingFragment类(在这里我把闹钟调在它熄灭每个星期二2)
private void setAlarm(){
AlarmManager alarmMgr = (AlarmManager) getActivity().getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(getActivity(), UpdateReceiver.class);
intent.putExtra("greeting", "Hello");
PendingIntent alarmIntent = PendingIntent.getBroadcast(getActivity(), 0, intent, 0);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
calendar.set(Calendar.HOUR_OF_DAY, 14);
// With setInexactRepeating(), you have to use one of the AlarmManager interval
// constants--in this case, AlarmManager.INTERVAL_DAY.
alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, alarmIntent);
}
在广播接收器的的onReceive()
public class UpdateReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
UpcomingFragment.getInstance().update();
//if tuesday
Toast.makeText(context, "Tuesday at 2" , Toast.LENGTH_LONG).show();
}
}
清单:
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name=".UpdateReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
i ca不提供您的logcat,因为它不会在打钱时打印它,我不知道我的android studio是否在这里或我的应用程序出错。谢谢!
意思'UpcomingFragment.getInstance()。update();'线路导致问题 –
显示日志猫错误 –