我有一個活動,當onStart
方法觸發時,它會調用Web服務來獲取數據。此活動包含一些按鈕,允許用戶導航到不同的片段。Android BroadcastReceiver onReceive NullReference
當檢索到來自網絡服務的數據時,它會啓動一個BroadcastIntent
。
如果用戶在相關片段內,它通過BroadcastReceiver
捕獲該意圖。在onReceieve
函數中,我將緩存的數據從獲取到static
類的Web服務數據。
所以,這就是問題所在:
內onReceieve
功能,當我試圖從靜態類的數據,它顯示的數據爲空。因此,當我嘗試訪問該數據的內部對象時,它會拋出一個NullReference。
唯一的一次,它不會顯示NullReference是,如果活動屏幕上,如果我伺候好10-15秒,讓數據回來靜態類內填充的對象。
該方法與立即啓動片段仍然相同。我有一個回調函數,當從Web服務接收到數據時觸發。這個函數總是在onReceieve之前調用。那麼,爲什麼在靜態類中的數據顯示爲空,我不知道.....
希望我的問題的描述是一致的。如果沒有,請讓我知道。
代碼:
此代碼將數據保存到靜態類(而且永遠是廣播接收器的之前的onReceive調用)。
for (int i = 0; i < myResult.getResource().getCategories().size(); i++) {
......
MyModel.cachedResult.put(tempOfferType, category);
}
立即在此之後,我開始BroadcastIntent
:
Intent broadcastIntent = new Intent(MyFragment.ACTION_REQUEST_RESULT);
this.getApplicationContext().sendBroadcast(broadcastIntent);
的onReceive
功能:
public void onReceive(Context context, Intent intent) {
...
// Line below throws NRE because offers is null
adapter = new OfferAdapter(getActivity(), 0, offers.toArray(new SinglePlusOfferVO[0]));
...
}
再次,如果我等待10-15秒的主要活動則NRE不會發生。如果我立即進入片段,那麼NRE發生。