Codenameone 在Android上重新启动我的应用程序时出现EOFEException

Codenameone 在Android上重新启动我的应用程序时出现EOFEException,codenameone,Codenameone,在Android上使用我的应用程序的特定场景中,我在首选项(CN1Preferences)中丢失了一些值 当我第一次启动应用程序时,我会在“首选项”中保存一些值。如果我关闭我的应用程序(从后台任务),然后我睡眠我的平板电脑,当我重新启动应用程序时,保存在首选项中的值将丢失。这是我在重新启动后获得的日志: CliniScore: [EDT] 0:0:0,4 - Exception: java.io.EOFException - null 05-04 16:32:40.667 10618-1

在Android上使用我的应用程序的特定场景中,我在首选项(CN1Preferences)中丢失了一些值

当我第一次启动应用程序时,我会在“首选项”中保存一些值。如果我关闭我的应用程序(从后台任务),然后我睡眠我的平板电脑,当我重新启动应用程序时,保存在首选项中的值将丢失。这是我在重新启动后获得的日志:

    CliniScore: [EDT] 0:0:0,4 - Exception: java.io.EOFException - null
05-04 16:32:40.667 10618-10978/? W/System.err: java.io.EOFException
05-04 16:32:40.667 10618-10978/? W/System.err:     at java.io.DataInputStream.readBoolean(DataInputStream.java:69)
05-04 16:32:40.667 10618-10618/? D/SecWifiDisplayUtil: Metadata value : SecSettings2
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.io.Util.readObject(Util.java:541)
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.io.Util.readObject(Util.java:638)
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.io.Storage.readObject(Storage.java:261)
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.io.Preferences.get(Preferences.java:83)
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.io.Preferences.get(Preferences.java:298)
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.impl.CodenameOneImplementation.initEDT(CodenameOneImplementation.java:235)
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.ui.Display.mainEDTLoop(Display.java:952)
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120)
05-04 16:32:40.667 10618-10978/? W/System.err:     at com.codename1.impl.CodenameOneThread$1.run(CodenameOneThread.java:60)
05-04 16:32:40.667 10618-10978/? W/System.err:     at java.lang.Thread.run(Thread.java:818)
如果我只强制关闭我的应用程序(不让平板电脑睡眠),我的首选项值就没有问题

在iOS/Simulator/Emulator(Android)中不会出现此问题。我只在运行安卓6.0.1的三星Galaxy标签上注意到了它


提前感谢。

这可能与对首选项的线程访问有关,这应该是合法的。我已经在今天的更新中同步了两种可能会造成破坏的方法,希望这能解决这个问题。

在我的例子中,我复制了一个工作项目来启动一个新项目。我留下了文件
keystore.jks
(keystore上传到Google Play)为空,所以当我编译时得到了这个异常

我刚刚删除了应用程序级
build.gradle
中的
android/buildTypes
部分中的signingConfig行,它成功了


可能是您遇到了这类问题,一个不应该为空的空的遗忘文件。

看起来您将一个对象放入了不正确实现了externalizable的首选项中,这是可能的吗?不,我在首选项中只有基元类型。我有一个实现externalizable的对象,但它被放在另一个文件中,似乎是正确的。您是否执行了加密存储或其他操作?你给CN1P文件写过信吗?您是否更改了首选项文件的路径?我手动加密了首选项文件中的一些字符串(使用我自己的算法AES)。是的,我写了CN1Preferences文件,并没有更改本文的pathI read注释:看起来Peng遇到了同样的行为。一个区别是我根本不使用EncryptedStorage…我没有注意到任何更改然后我怀疑这是一个竞争条件我在github中没有找到包含您的修改的提交。你能给我链接吗?好像git把我的零钱弄丢了!!!我正试图弄清楚我犯下的其他错误,但没有看到几个不同变化的记录!销毁是一种非常有问题的方法。你应该尽可能避免。在我们最初创建生命周期映射时,我们考虑过根本不包括它,这可能是一个更好的选择。。。