java 安卓视图未从其他类和其他线程更新
我试图在活动中更新TextView,更新视图的方法在主活动中(正常情况),但调用此方法是从另一个类(和另一个线程)进行的
这是更新视图的方法,此方法位于主活动中, (请注意,所有日志均按正确顺序正确打印):
public void getDataFromFiles() {
String new_text = JsonReader.readTextData(dataName,activityName, this);
Log.i("Loading", "loaded text " + new_text );
if (new_text != null) {
TextView introText = (TextView) findViewById(R.id.loading_introTxt);
introText.setText(new_text);
}
}
这是从另一个名为LoadingThread的类调用它的地方,它具有引用(loadingActivity):
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i("LoadingThread", "Will update loading screen");
loadingActivity.getDataFromFiles();
}
});
还要注意如何从主活动调用LoadingThread类
LoadingThread loadingThread = LoadingThread.getInstance(this);
Thread thread = new Thread(loadingThread);
loadingThread.setActivity(this);
thread.start();
这就是流程: 主活动启动LoadingThread,然后在此之后再次调用主活动中的一个方法,该方法应该更新视图,但这不会发生,但当关闭应用程序并再次重新打开它时,更新就会出现
# 1 楼答案
我发现了问题,是在
而getInstance()是:
当关闭并重新打开应用程序时,实例不为null,因此返回以前的活动,因为加载活动时的引用未更新,所以不再在此处,因此我将其更改为那样
现在它工作了