每次打开钱包都得开很长的时间,而且钱包一直是出于一种假死的状态,如果这时候你继续点钱包几下,估计会马上弹出一个程序无响应的对话框,那么问题来了,这是为啥呢。
这个问题其实很简单,挂个proxifier就可以看到即使钱包是在假死状态,但是仍然还是有连接的,那么这个问题其实就是钱包在启动的时候需要进行联网操作,但是这个操作是主线程做的,就导致本身的钱包程序处于一种阻塞状态。如果这时候你再点两下,因为钱包无法响应你的操作,所以系统就会弹出一个无响应对话框。要是Android的话5s自己就会弹出一个ANR无响应弹窗,然后GG。
那么这个问题怎么避免,或者怎么缓解?
1)其实从使用者的角度这个问题避免不了这个需要开发者去优化这个钱包,而且优化方式很简单,只要把开始的那部分网络请求换到子线程就ok了。
2)那么从用户的角度怎么去缓解这个问题呢?首先如果出现了无响应窗口不用急着关闭,点击等待响应就好了,后面阻塞完成后自然会打开。第二个要注意的点事如果你有用proxifier这个软件话不要急着先打开这个软件,因为你一旦打开就意味着钱包一打开就连上了网络,而且会话更长的时间去做同步的事情。如果是先打开钱包的话,在大天朝十有八九是连不上,过了超时的时间自然会断开网络连接操作,执行UI线程。所以大家有兴趣额可以测试下这两种打开方式,一般来说是先打开钱包,等钱包完全打开了,然后再去打开proxifier这个软件。
更多的讨论可以看这里:https://deeponion.org/community/threads/wallet-application-launch-so-slow.4371/ (Wallet Application Launch So Slow)
原文:
https://deeponion.org/community/threads/4372/作者:yinchensan
有路过的大佬觉得不错可以点个merit 不胜感激