主线程要处理多少工作?有关Android中线程的一些问题

问题描述

我具有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.如以下链接中所示的答案:The application may be doing too much work on its main threadThe application may be doing too much work on its main thread. how to fixed it。这可能不是一个真正的问题,因为我正在使用仿真器,并且代码/资源来自模板,这可能不是最佳选择。

但是,什么才真正确定术语“工作量过多” 当我在onBtnClick中注释掉两行时,警告消失了。尽管我使用的是仿真器,但是findViewById()足够“沉重”,足以生成警告。 我知道60 fps (16ms per frame)是标准,但仍然不能回答我的问题。

此外,有人可以简化当前正在执行的主线程/方法吗(以我为例)?我知道Android中的main类/线程与常规Java编程(如回答here)不同。

从概念上讲,主线程是否与UI线程完全不同(例如在Java Swing中使用invokelater)?我猜是这样,正如Google文档所建议的{{3} }


更新

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...