|
5
|
| Adrian · 技术社区 · 8 年前 |
|
|
1
7
我在模拟器中安装了你的应用程序,并能够使用monkey工具再现此崩溃( https://developer.android.com/studio/test/monkey.html )。此工具以高速模拟用户操作,如单击、触摸、旋转等。但我无法手动复制它。 您在问题中写道,您想知道如何找出问题所在,因此我将详细解释我的过程。对于实际解决方案,请跳到第5节。 1、如何了解IllegalStateException的信息 第一个堆栈跟踪显示异常是在ViewPager上引发的。java,所以我在该文件中搜索字符串“抛出新的IllegalStateException”。有不同的版本,但我检查的少数版本只会引发此异常 6个位置 ,则,
剩下的唯一一个
被抛出
下面是抛出的代码
这就是我第一次回答这个问题的原因。 2、复制错误 在模拟器中下载应用程序后,我从命令行运行以下命令:
这将以非常高的速度向emulator发送100.000个半随机触摸事件、旋转、音量上升/下降等,以在压力下测试应用程序。如果在应用程序的调试版本中运行此命令,则应该能够看到我在步骤1中获得的堆栈跟踪。 3、获取有关bug的信息(大部分是推测性的)
从这里,你可以
我使用运行此应用程序
4、碰撞原因
请注意,第1节(@4b49965)中的适配器在第2节中不断被调用,当
很可能此适配器在其
(顺便说一句,这些静态数组确实会在你的应用程序中造成另一个bug:如果你选择level X,解决那里的一个问题,然后通过祝贺对话框返回菜单,然后选择另一个level Y,然后按两次back,你将进入level Y,而不是level X。) 5、解决方案 一般来说,只有当静态字段是真正不可变的(例如常量)时,或者至少当您可以正确同步并发访问时,才使用静态字段。另一方面,由于内存泄漏,静态类几乎总是优于内部类。 在您的特殊情况下,您应该:
您还可以将这些字段设置为私有,尽管这不是严格必要的。
这应该可以做到。 |
|
|
2
2
问题就在这些方面
你为什么要这么做 静止的 ? |
|
Murilo · Jetpack编写导航栏项目图标 1 年前 |
|
|
KolaYAndr · 活动RESULT_OK似乎从未发生过 1 年前 |
|
psycho_pat · Android应用程序中的权限 1 年前 |
|
|
FarazFiroz · 如何将argb转换为描述性文本颜色 1 年前 |
|
Daniel · Unity Android游戏支持的设备数量太少 1 年前 |