在Extras Bundle中传递JSON字符串的活动之间的通信是否正确?

时间:2018-09-14 15:02:01

标签: android android-studio android-intent android-activity bundle

我试图使用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)

0 个答案:

没有答案