我有一个名为BuildingActivity
的活动,它扩展了ListActivity
。Android - 从后台线程返回ArrayList到活动
在onCreate()
方法中,我在后台线程中运行7个数据库查询。在后台线程中,我正在从查询返回的数据构建一个ArrayList<String>
对象。
现在,我想返回ArrayList<String>
对象返回到我的BuildingActivity
线程。
这里,即时通讯工作的部分代码:
public class BuildingActivity extends ListActivity {
private ProgressBar mProgressBar;
public ArrayList<String> buildings;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_building);
new Thread(new Runnable() {
@Override
public void run() {
ArrayList<String> list;
DataSource dbSource = new DataSource(getApplicationContext());
dbSource.open();
list = dbSource.getBuildingsList();
dbSource.close();
//*** NOW HOW DO I PASS list BACK TO onCreate()?
//*** I WANT TO MAKE buildings = list.
}
}).start();
if(!buildings.isEmpty()) {
// do Something.
// If i do buildings = list in the background thread,
// This will always be executed because the background thread can take
// some time to return the data. How do i make sure this part of
// code is executed only after the data has been returned?
}
}
}
我的目标后,这是创建一个列表,从这个返回大厦名单。而在点击建筑物时,另一项活动将开放。我如何解决这个问题?
谢谢!
看下面的方法....当你的列表不是null,那么你可以添加一个条件/ /在这里返回你的列表块到UI线程 –
isnt buildings = list possible?错误是什么? –
@ Rat-a-tat-a-tat料理鼠王有可能。但是随后线程下面的'if'语句将一直执行,因为Activity线程不会等待后台线程完成。 –