我想解决一个非常奇怪的问题
我的应用程序在我的所有测试设备中运行良好,在Nexus 5上恢复出厂设置后,当它尝试从带有代码的SharedPreferences中获取int
时
LEVEL_MAXIMO_ALCANZADO = sp.getInt(SP_NIVEL_JUEGO_MAXIMO, 1);
它给了我一个字符串(但只在Nexus 5中,在其他设备中它给我int,但在我的nexus 5中导致异常java.lang.String cannot be cast to java.lang.Integer
)
如果我使用代码
获取String的值String prueba = sp.getString(SP_NIVEL_JUEGO_MAXIMO, "1");
我的值为5t+SNTiVFHA=
我不知道为什么这只会在出厂重置后通过nexus 5
如果有人可以给出提示,那就太棒了,我现在迷失了
代码 - (ctx是一个上下文对象)
public static SharedPreferences sp;
public static SharedPreferences.Editor editor;
if(sp == null) sp = ctx.getSharedPreferences(SP_NAME, Context.MODE_PRIVATE);
if(editor == null) editor = sp.edit();
editor.putInt(SP_DINERO, DINERO);
editor.commit();
其他信息
我还尝试取消应用并重新启动设备
我使用了ObscuredSharedPreferences这个加密它们的类,在那个类中它给了我填充块损坏的异常,然后我交换到SharedPreferences但是同样的错误
由于我的phonne说当它只使用了5gb时已经满了,我把工厂重置了
所以设备上可能存在内存问题?
答案 0 :(得分:0)
我刚刚进行了重置(擦除缓存并擦除数据,并从引导加载程序恢复出厂设置),现在又重新开始了
我认为内存已损坏且失败了。