Java 启动活动时,应用程序可能在其主线程上做了太多工作
我从以前的活动开始活动,但在开始之前,它会冻结几秒钟,有时甚至更长 我试着禁用一些我怀疑的功能,清理代码,甚至优化它的一部分,但这些都不起作用 我不知道我应该在这里分享代码的哪一部分,因为我无法确定这个问题的原因,但是如果您需要查看它,我会包括它 这就是我使用按钮启动其他活动的方式: public void startCount (View v){ Intent intent = new Intent(MainActivity.this, CounterActivity.class); startActivity(intent); } 公共无效起始帐户(视图v){ 意向意向=新意向(MainActivity.this,antractivity.class); 星触觉(意向); } 很抱歉,在这里x_x共享代码时遇到问题 SecondActivity.java: https://pastebin.com/SmiJ0Qiv https://pastebin.com/SmiJ0Qiv 第二个活动布局: https://pastebin.com/1Ef27edW https://pastebin.com/1Ef27edW 这是我的日志文件: 我怀疑原因是: GooglePlayServicesUtil: Google Play services out of date. Requires 12451000 but found 10298470 GooglePlayServicesUtil:GooglePlayServices过时了。需要12451000,但找到10298470Java 启动活动时,应用程序可能在其主线程上做了太多工作,java,android,android-studio,optimization,Java,Android,Android Studio,Optimization,我从以前的活动开始活动,但在开始之前,它会冻结几秒钟,有时甚至更长 我试着禁用一些我怀疑的功能,清理代码,甚至优化它的一部分,但这些都不起作用 我不知道我应该在这里分享代码的哪一部分,因为我无法确定这个问题的原因,但是如果您需要查看它,我会包括它 这就是我使用按钮启动其他活动的方式: public void startCount (View v){ Intent intent = new Intent(MainActivity.this, CounterActivity.cla
如果您能指出导致冻结的问题,我们将不胜感激!谢谢。在大多数情况下,这是由于在非主线程(UI线程)的线程中启动其他活动的代码造成的 因此,请共享启动其他活动的代码部分,如果可能,请在其他活动中共享
protectedvoid onCreate(Bundle savedInstanceState)
可能是您在那里执行耗时/cpu的任务。在许多情况下,您必须考虑
java
最佳实践,以及使用一些设计模式
在这里,我将列出一些您应该考虑的基本模式
和实践
你当然可以自己查,但我会在这里提到几件事
最佳实践
- 连接
字符串时使用StringBilder
- 避免使用正则表达式
- 使用基本体和堆栈
设计模式
设计模式是经验证的解决特定问题/任务的解决方案
这些是最常见的:
- 单态模式
- 原型模式
- 工厂模式
是了解更多信息的链接
注意:这不一定能解决您的问题,但可能会提高性能。它会冻结2-3秒吗?@PhillAlexakis是的,大多数情况下会在这段时间内冻结。您的应用程序是否会获取或发送信息到远程api/位置?我的项目中包括firebase,不确定这是否算数?我已经设置了ads toolet,简单地说,如果你需要internet连接来运行你的应用程序,很可能这就是冻结的情况,我将向你列出一些要考虑的java
最佳实践首先感谢你分享你的代码。在查看代码之后,似乎您在onCreate方法上做了太多的事情。你应该一分为二(至少)或更多。内部:onCreate只需让代码负责视图,并将其他代码移动到onStart,例如。你是对的,onCreate上的工作太多了,当我只剩下负责视图的必要代码时,它现在运行得很顺利,我只需要将其余的工作放在另一个方法上,我应该没事了。谢谢谢谢你分享的有用信息我当然需要把它们付诸实践,但冻结的主要原因是谷歌广告加载过程,在我将其移动到一个单独的方法后,不再冻结!谢谢你宝贵的时间