Java [Android]谷歌Gson崩溃应用程序
我在android应用程序中使用gson以NDAlarm类的形式保存警报。 但当我试图将我的Ndalarm数组转换为json时,应用程序冻结,垃圾收集器发疯了 发生了什么事 我的活动中的保存代码:Java [Android]谷歌Gson崩溃应用程序,java,android,garbage-collection,gson,Java,Android,Garbage Collection,Gson,我在android应用程序中使用gson以NDAlarm类的形式保存警报。 但当我试图将我的Ndalarm数组转换为json时,应用程序冻结,垃圾收集器发疯了 发生了什么事 我的活动中的保存代码: private void SaveAlarms() { Log.d("NewDay", "Saving Alarms"); new Thread(new Runnable() { @Override public void run() {
private void SaveAlarms()
{
Log.d("NewDay", "Saving Alarms");
new Thread(new Runnable() {
@Override
public void run() {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
String temp = gson.toJson(_Alarms.toArray(), NDAlarm[].class);
_Editor.putString("Alarms",temp);
_Editor.commit();
Log.d("NewDay", "Saved Alarms");
}
}).start();
}
我在活动的暂停覆盖中调用SaveAlarms
我的恩达拉姆班:
public class NDAlarm {
private long _AlarmTime = 0;
private PendingIntent _AlarmIntent = null;
public NDAlarm(long time, PendingIntent intent)
{
_AlarmTime = time;
_AlarmIntent = intent;
}
public long get_AlarmTime() {
return _AlarmTime;
}
public void set_AlarmTime(long _AlarmTime) {
this._AlarmTime = _AlarmTime;
}
public void set_AlarmIntent(PendingIntent _AlarmIntent) {
this._AlarmIntent = _AlarmIntent;
}
public PendingIntent get_AlarmIntent() {
return _AlarmIntent;
}
public DateTime ToDateTime()
{
return new DateTime(_AlarmTime);
}
}
我听说过gson的“循环引用”问题,但我不知道如何识别它或如何修复它
请帮忙。我想也是这样
您的问题可能与尝试序列化PendingEvent对象有关。要停止序列化,可以将其声明为瞬态:
private transient PendingIntent _AlarmIntent = null;
…然后在反序列化后设置它。或者,由于在这种情况下,您只需要存储报警时间,因此最好将其添加到您的共享首选项中,并跳过任何Gson内容。也发布您的崩溃日志。感谢您指出!我已经开始存储Pending帐篷id,而不是实际的Pending帐篷。