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
メソッドを再度使用する必要があることです。 loadDataFromFirebase
メソッドを呼び出すためにもう一度t.start()
に電話したかったのですが、thread already started
というエラーがありました。私はこのコードを書き込むことによって、そのチェック:
if(t.getState()== Thread.State.NEW)
t.start();
else
someMethod();
else
文は上記働きました。
私の質問は: 1)loadDataFromFirebase
メソッドは本当にこの方法で別のスレッドで動作しますか? 2)別のスレッドでloadDataFromFirebase
メソッドを再度呼び出すにはどうすればよいですか?もう一度Thread
の別の変数を作成する必要がありますか?
しかし、毎回特定の子供からのデータを読んでいます(((私は毎回質問することなく可能ではないとは思っていません) – abay
あなたは特定の子供の変更を購読することができます –
私はする必要がありますそれはメインスレッドですか? – abay