2016-01-13 26 views
0

即時通訊使用AsyncTaskLoader從Web API獲取數據,但由於某種原因,加載程序始終沒有觸發onLoadFinished回調。加載程序不是全部觸發加載完成的回調

這是從我的片段snippt,我如何使用裝載機。我總是重新啓動加載器restartLoader(...)。forceload()來更新結果。加載器基於用戶交互而被觸發。

private void getData() { 
    Bundle bundle = new Bundle(); 
    bundle.putParcelable("userInput", mUserInputData); 
    getLoaderManager().restartLoader(CARS_LOADER_ID, bundle, carsLoaderListener).forceLoad(); 
} 


private LoaderManager.LoaderCallbacks<List<Car>> carsLoaderListener = new LoaderManager.LoaderCallbacks<List<Car>>() 
{ 
    @Override 
    public Loader<List<Car>> onCreateLoader(int id, Bundle args) 
    {; 
     return new CarsLoader(getActivity(), (UserInput)args.get("userInput")); 
    } 

    @Override 
    public void onLoadFinished(Loader<List<Car>> loader, List<Car> data) 
    { 
     // This is not allways get called 
     setData(data); 
    } 

    @Override 
    public void onLoaderReset(Loader<List<Car>> loader) 
    { 
    } 
}; 

即使它已經在運行,重新啓動加載程序也可以嗎?這是否會導致裝載機堵塞的情況?有時候加載器被解僱了,它正在完成這項工作,但它在LoadFinished回調中更新了一些。當加載程序像這樣卡住重新啓動時,片段/關閉應用程序可以解決問題。

回答

2

我也遇到過這樣的問題。我不知道它的錯誤是LoaderManager.RestartLoader還是其他的,但getLoaderManager().destroyLoader(Loader_id),然後getLoaderManager().initLoader()爲我工作。

希望這會有所幫助。

+0

謝謝!看起來可能會有所幫助。不過需要做更多的測試。仍然奇怪的問題,我認爲是在LoaderManager中的錯誤... – devha

相關問題