我有一種方法,將數據從Firebase
加載到ArrayList
。在此之後,我用ArrayList
構建RecyclerView
。我決定在另一個線程上加載數據。以下是我的代碼:如何在線程中每次調用方法?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_just);
citiesRecyclerView =
(RecyclerView)findViewById(R.id.recyclerView);
handler = new Handler()
{
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==1)
{
cityAdapter = new
CityAdapter(MainActivity.this,cities) ;
citiesRecyclerView.setAdapter(cityAdapter);
}
}
};
t = new Thread(new Runnable() {
@Override
public void run() {
//method that loads data into List.If this method was
//successfully done,then I send message 1 to Handler
loadDataFromFirebase();
}
});
t.start();
//other operations below
}
希望,這一切都可以理解。代碼工作正常。而我的問題是我需要在線程中再次使用loadDataFromFirebase
方法。我想再次打電話給t.start()
以便撥打loadDataFromFirebase
方法,但有錯誤thread already started
。我通過編寫此代碼檢查:
if(t.getState()== Thread.State.NEW)
t.start();
else
someMethod();
else
聲明以上工作。
而我的問題是: 1)loadDataFromFirebase
方法真的在另一個線程通過這種方式嗎? 2)如果在另一個線程中再次調用loadDataFromFirebase
方法,如果發生了什麼?我是否需要再爲Thread
創建另一個變量?
但是我每次都從特定的孩子讀取數據(((。我不認爲這是可能的,不需要每次查詢 – abay
您可以訂閱特定孩子的更改 –
我會嘗試,我需要做它在主線程? – abay