0

我有 Java 的背景,最近,我正在学习 Android 中的 Java,所以对于像我这样的新手来说,这个问题似乎是压倒性的。无论如何,这里有问题(斜体)。

我使用模板(电话和平板电脑 - 空活动)创建了一个项目,然后使用布局编辑器将 2 个纯文本添加到 GUI。之后,我在MainActivity.java中添加了一些代码(类中没有其他内容)。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    EditText equation = findViewById(R.id.textEquation);
    equation.setEnabled(false);

    EditText result = findViewById(R.id.textResult);
    result.setEnabled(false);

}

public void onBtnClick(View theView){

    EditText equation = findViewById(R.id.textEquation);
    EditText result = findViewById(R.id.textResult);

}

当我运行程序时,我收到了这个警告:I/Choreographer: Skipped 31 frames! The application may be doing too much work on its main thread.正如这些链接中显示的答案:应用程序可能在其主线程上做太多工作,而应用程序可能在其主线程上做太多工作。如何修复它。这可能不是一个真正的问题,因为我使用的是模拟器并且代码/资源来自模板,这可能不是最佳的。

然而,究竟是什么决定了这里的“工作量太大”这个词?当我注释掉 中的两行时onBtnClick,警告就消失了。虽然我使用的是模拟器,但findViewById()它相当“重”,足以产生警告。我知道60 fps(每帧 16 毫秒)是标准,但它仍然不能回答我的问题。

此外,有人可以简化现在正在执行的主线程/方法(在我的情况下)吗?我知道mainAndroid 中的类/线程与常规 Java 编程中的不同(如此处所回答

从概念上讲,主线程是否与 UI 线程完全不同(如invokeLater在 Java Swing 中使用)?我猜它是,正如谷歌文档所暗示的那样,“因此,主线程有时也称为 UI 线程。但是,在特殊情况下,应用程序的主线程可能不是它的 UI 线程;有关更多信息,请参阅线程注释。 "


更新

  • (09/30) 对于我遇到的问题,现在我已经阅读了更多关于Activity 生命周期,我开始对下面发生的事情有所了解。但是,我仍在寻找两个斜体问题的答案。
4

0 回答 0