我有一种方法,将数据从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