donmor / Tiddloid

Tiddloid is an app to work with locally stored TiddlyWikis.
GNU General Public License v2.0
234 stars 10 forks source link

Uncaught Error: Java exception was raised during method invocation #62

Closed linonetwo closed 1 year ago

linonetwo commented 1 year ago

Screenshot_2023-02-12-19-28-35-887_top.donmor.tiddloid.jpg

点保存的时候报的,从浏览器添加的时候保存没问题

donmor commented 1 year ago

地址多少 我去试试

linonetwo commented 1 year ago

本地怎么看log,一定得开发模式吗?

linonetwo commented 1 year ago

我是从太记用 mobile-sync 插件在手机浏览器加载本地 wiki ,然后分享给 tiddloid 成功后,点 wiki 内的保存按钮报的错。

线上的我还没试过,可能和本地的不一样。

linonetwo commented 1 year ago

奇怪,我试了下 https://github.com/tiddly-gittly/Tiddlywiki-NodeJS-Github-Template 也无法复现,我还是自己看看log吧

donmor commented 1 year ago

啊这。。毕竟修改过的,也可能什么地方不匹配😂我适配官版就用了一些tricks

linonetwo commented 1 year ago
I/donmor.tiddloid: Starting a blocking GC Alloc
I/donmor.tiddloid: Alloc concurrent copying GC freed 1245(45KB) AllocSpace objects, 0(0B) LOS objects, 15% free, 133MB/157MB, paused 15us,11us total 13.480ms
W/donmor.tiddloid: Throwing OutOfMemoryError "Failed to allocate a 70307336 byte allocation with 25165824 free bytes and 58MB until OOM, target footprint 164755112, growth limit 201326592" (VmSize 30958944 kB)
W/System.err: java.lang.OutOfMemoryError: Failed to allocate a 70307336 byte allocation with 25165824 free bytes and 58MB until OOM, target footprint 164755112, growth limit 201326592
W/System.err:     at libcore.util.CharsetUtils.toUtf8Bytes(Native Method)
W/System.err:     at java.lang.String.getBytes(String.java:1153)
W/System.err:     at top.donmor.tiddloid.TWEditorWV$6.saveWiki(TWEditorWV.java:534)
W/System.err:     at android.os.MessageQueue.nativePollOnce(Native Method)
W/System.err:     at android.os.MessageQueue.next(MessageQueue.java:335)
W/System.err:     at android.os.Looper.loopOnce(Looper.java:161)
W/System.err:     at android.os.Looper.loop(Looper.java:288)
W/System.err:     at android.os.HandlerThread.run(HandlerThread.java:67)
I/chromium: [INFO:CONSOLE(214)] "Uncaught Error: Java exception was raised during method invocation", source: $:/boot/boot.js (214)
I/chromium: [INFO:CONSOLE(43)] "Uncaught Error: Java exception was raised during method invocation", source: $:/core/modules/savers/andtidwiki.js (43)
linonetwo commented 1 year ago

这不能调大点吗

donmor commented 1 year ago

这不能调大点吗

等我有空加个android:largeheap = "true"

不过听说加了貌似影响性能?

linonetwo commented 1 year ago

我先试试

https://github.com/donmor/Tiddloid/blob/e45324d416cf528943323bc4b94ac359d01d769c/app/src/main/java/top/donmor/tiddloid/TWEditorWV.java#L521-L529

这里为什么要存入 this.exData ? 下面不是直接 return 了吗。如果return了后续会继续执行哪里呢?会再用到 exData 吗

linonetwo commented 1 year ago

我看据说应该用一个流来写入,这样就不用 getBytes 了

donmor commented 1 year ago

我先试试

https://github.com/donmor/Tiddloid/blob/e45324d416cf528943323bc4b94ac359d01d769c/app/src/main/java/top/donmor/tiddloid/TWEditorWV.java#L521-L529

这里为什么要存入 this.exData ? 下面不是直接 return 了吗。如果return了后续会继续执行哪里呢?会再用到 exData 吗

tiddlywiki生成导出文件时会一次性返回一整个字符串,不在这个方法里处理一下的话,到return就丢弃了,saf保存界面要转intent,期间不阻塞,一定会return,所以数据必须存出来在intent返回那里拿到目标文件uri之后取数据写流