我正在尝试将一个可序列化的对象发送到待处理的Intent.问题是收到的警报返回为null.即使Alarm实现了可序列化的接口.
//AlarmService.java
Intent myIntent = new Intent(getApplicationContext(), AlarmAlertBroadcastReciever.class);
Bundle bundle = new Bundle();
bundle.putSerializable("alarm", alarm);
myIntent.putExtras(bundle);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, myIntent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarmManager = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarm.getAlarmTime().getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)
收到的警报为空.
//AlarmAlertBroadcastReceiver.java
public class AlarmAlertBroadcastReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Alarm alarm = (Alarm)intent.getExtras().getSerializable("alarm");
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我尝试过的更多内容如下,但它似乎不起作用:
//AlarmService.java
Intent myIntent = new Intent(getApplicationContext(), AlarmAlertBroadcastReciever.class);
myIntent.putExtra("alarm", alarm);
myIntent.setAction("abc.xyz");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarm.getAlarmTime().getTimeInMillis(), pendingIntent);
Run Code Online (Sandbox Code Playgroud)
收到的警报为空.
//AlarmAlertBroadcastReceiver.java
public …
Run Code Online (Sandbox Code Playgroud) 我正在阅读弗里斯比教授的大部分功能编程指南,我遇到了如下所示的代码示例.我不明白为什么每次调用squareNumber时缓存都不会重置为{}.
var memoize = function(f){
var cache = {}; // why is this not reset each time squareNumber is called?
return function() {
var arg_str = JSON.stringify(arguments);
cache[arg_str] = cache[arg_str]|| f.apply(f, arguments);
return cache[arg_str];
};
}
var squareNumber = memoize(function(x){ return x*x; });
squareNumber(4);
//=> 16
squareNumber(4); // returns cache for input 4
//=> 16
squareNumber(5);
//=> 25
squareNumber(5); // returns cache for input 5
//=> 25
Run Code Online (Sandbox Code Playgroud)
我的一个理论是,由于memoize是一个全局变量,因此每次调用缓存变量时都不会重置缓存变量.但我似乎无法找到一个好的解决方案.