问题描述
我具有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 thread和The 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} }
更新
- (09/30)对于我遇到的问题,由于我已经阅读了有关"As such,the main thread is also sometimes called the UI thread. However,under special circumstances,an app's main thread might not be its UI thread; for more information,see Thread annotations."的更多信息,所以我开始对下面的内容有所了解。 但是,我仍然在寻找两个斜体问题的答案。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)