我试图使用Intent Extras捆绑包在活动之间传递一些对象,我发现将这些对象存储在getApplication()中可能很危险,因为当手机杀死您的应用程序进程时,数据可能会丢失。
我的问题是我无法使此类可序列化或可打包(因为它们保存了对其他类的引用),所以我尝试使用Gson将对象转换为JSON并将其放入包中。
Intent = new Intent(Constants.MY_ACTIVITY);
intent.putExtra(MyActivity.PARAM_DIRECCION, new Gson().toJson(direccion));
startActivity(intent);
,然后从我的其他活动中检索该对象:
if(getIntent().getExtras() != null && getIntent().getExtras().get(PARAM_DIRECCION) != null) {
direccion = new Gson()
.fromJson((String) getIntent().getExtras()
.get(PARAM_DIRECCION), Direccion.class);
到目前为止,一切正常,但是随后在玩我的应用程序时,发现有一个SIGABRT代码11,所以我的问题是:
这是正确的吗?以这种方式处理数据有什么后果吗? 有什么更好的方法吗?
这是我看到的日志:
09-14 12:41:37.000 372-372/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'motorola/titan_retla/titan_umts:6.0/MPB24.65-34-3/3:user/release-keys'
Revision: 'p400'
ABI: 'arm'
09-14 12:41:37.001 372-372/? A/DEBUG: pid: 13895, tid: 13912, name: FinalizerDaemon >>> ar.com.holon.tmob <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xdeadbaad
09-14 12:41:36.996 372-372/? W/debuggerd: type=1400 audit(0.0:1318): avc: denied { search } for uid=0 name="com.google.android.gms" dev="mmcblk0p38" ino=285 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
09-14 12:41:37.006 372-372/? W/debuggerd: type=1400 audit(0.0:1319): avc: denied { search } for uid=0 name="com.google.android.gms" dev="mmcblk0p38" ino=285 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
type=1400 audit(0.0:1320): avc: denied { search } for uid=0 name="com.google.android.gms" dev="mmcblk0p38" ino=285 scontext=u:r:debuggerd:s0 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
09-14 12:41:37.066 372-372/? A/DEBUG: Abort message: 'invalid address or address of corrupt block 0xb7acf598 passed to dlfree'
r0 00000000 r1 00000000 r2 00000000 r3 00000002
r4 b7acf598 r5 deadbaad r6 b6d5bec8 r7 99386000
r8 b7acf5a0 r9 b781ea30 sl 13704040 fp 13916d80
ip b6d565dc sp b4233538 lr b6d277d7 pc b6d277d6 cpsr 60070030
09-14 12:41:37.071 372-372/? A/DEBUG: backtrace:
#00 pc 000307d6 /system/lib/libc.so (dlfree+1285)
#01 pc 00054559 /system/lib/libhwui.so (_ZN7android10uirenderer16RenderProperties14ComputedFieldsD1Ev+16)
#02 pc 00054591 /system/lib/libhwui.so (_ZN7android10uirenderer16RenderPropertiesD1Ev+36)
#03 pc 000542f5 /system/lib/libhwui.so (_ZN7android10uirenderer10RenderNodeD2Ev+112)
#04 pc 0005432b /system/lib/libhwui.so (_ZN7android10uirenderer10RenderNodeD0Ev+6)
#05 pc 726f8ae5 /data/dalvik-cache/arm/system@framework@boot.oat (offset 0x1fd2000)