通常我這樣做:在Android生命週期內從後臺線程加載數據的正確方法是什麼?
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//initialize variables, set values from argument bundle, etc
List<SomeObject> list = someIntenseDataLoadingProcess();
adapter = new Adapter(list);
}
@Nullable
@Override
public void onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.some_layout, container, false);
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(getLinearLayoutManager());
recyclerView.setAdapter(adapter);
return view;
}
(我從記憶會在這裏,但應該抓住它的要點)。
但是,如果我在新的線程調用中包裝列表/適配器初始化,有時在創建視圖時結果爲空,或者在某些情況下根據發生的情況拋出錯誤。
我只是有訂單錯誤或什麼?我應該在哪裏應用線程?
只包裝someIntenseLoading線程中,並在它的結尾recyclerview.setAdapter(新的適配器(列表)) – X3Btel
@ X3Btel你可以更明確,你是什麼意思?只是將它包裝在一個線程中並不能解決問題 – KaliMa
當活動啓動時,最好在您的案例回收器視圖中初始化您的視圖,然後啓動您的asynctask /線程,並在其完成時更新視圖和結果 - 在您的案例中recyclerView.setAdapter – X3Btel