我最近将Android应用程序从使用Gradle插件 2.2.3 升级到了Gradle插件 3.0.1。 进行了这些更改后,我的应用程序在开始 Activity ,在CursorLoader完成后重新加载 View 时遇到性能下降(低于1秒,但很明显)的问题。

例如,在一种情况下,用户执行一项查询数据库并加载另一个屏幕的操作。这个时间以毫秒为单位,从大约470ms更改为1200ms。我觉得我应该进行故障排除,为什么延迟会如此之大,但是现在我主要关注的是gradle插件版本更改将如何影响它。

我决定通过仅升级到 2.3.0 来缩小问题范围。性能问题仍然存在。这是我要重现缓慢行为所必需的项目级Gradle文件中的唯一更改:

dependencies {
    classpath 'com.android.tools.build:gradle:2.2.3'
    ...
}

更改为...
dependencies {
    classpath 'com.android.tools.build:gradle:2.3.0'
    ...
}

构建工具的版本一致为26.0.2。我已经验证了运行棉花糖和一台运行棒棒糖的设备运行缓慢。我注意到运行牛轧糖的设备没有区别。
  • 我是否可以说Gradle插件版本更改会影响内置APK的性能?
  • 由于这一行更改,还有哪些其他因素可能导致错误?
  • 我还能为您提供哪些其他信息以帮助我指出正确的方向?

  • 谢谢。

    编辑:我创建了一个重现此行为的示例应用程序。它包括两个 Activity 。当我按下一个按钮时,第一个启动第二个。第二个 Activity 执行大量循环的虚拟for循环,在时间戳之前和之后记录日志。

    主要 Activity :
    startActivity(new Intent(MainActivity.this, SecondActivity.class));
    

    SecondActivity:
    @Override
        public void onCreate(Bundle savedInstanceState) {
            Log.i(TAG, "SecondActivity:onCreate");
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Log.i(TAG, "Before wait...");
            for (int i = 0; i < 1000000000; i++) {
    
            }
            Log.i(TAG, "After wait...");
        }
    

    结果:

    2.2.3:
    01-15 14:23:54.65 I / SecondActivity:SecondActivity:onCreate
    01-15 14:23:54.705 I / SecondActivity:WAITING之前...
    01-15 15:23:56.635 I / SecondActivity:WAITING之后...
    (2秒)

    2.3.0:
    01-15 14:25:25.185 I / SecondActivity:SecondActivity:onCreate
    01-15 14:25:25.265 I / SecondActivity:WAITING之前...
    01-15 15:25:55.795 I / SecondActivity:WAITING之后...
    (30秒)

    最佳答案

    我转到“首选项”(“构建”,“执行”,“部署”>“即时运行”)并禁用了“即时运行”。我的问题解决了。在使用旧版本很长时间之后,我想我不习惯使用此功能。

    我能找到的最接近的解释是在这里:
    https://medium.com/google-developers/instant-run-how-does-it-work-294a1633367f



    现在,我只是要停止将头撞在墙上。

    10-08 16:27