我有一個名爲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線程不會等待後臺線程完成。 –