如果我在非 ui 线程上运行此方法是否有问题?
假设dailyPlan
是一个模型类并且它的方法不修改 UI,那么不,这不是问题,Android 不会抱怨,你也不会收到任何运行时错误。但是,我不会采用这种方法,因为通常从另一个线程直接访问一个线程数据是一种不好的做法——你永远不知道谁在修改什么,可能会出现读/写问题等等。这些通常是通过同步数据来解决的,但是如果你把synchronized
代码放在 UI 线程中,你会让事情变得更糟!
对于您的问题,为什么不将数据从 UI 控件传递到使用上述逻辑的线程?创建它时,传递 3 个字符串:
editLog.getText().toString()
editPlan.getText().toString()
editQuestion.getText().toString()
例子:
private EditText editLog;
private EditText editPlan;
private EditText editQuestions;
private void activityMethodThatStartsThread() {
String log = editLog.getText().toString();
String plan = editPlan.getText().toString();
String questions = editQuestions.getText().toString();
DailyReportModel model = new DailyReportModel(log, plan, questions);
model.start();
}
public class DailyReportModel extends Thread {
private String log;
private String plan;
private String questions;
public DailyReportModel(String log, String plan, String questions) {
super();
this.log = log;
this.plan = plan;
this.questions = questions;
}
void updateModel() {
dailyReport.log.setValue(log);
dailyReport.plan.setValue(plan);
dailyReport.question.setValue(questions);
}
}