2017-08-26 70 views
1

我對使用Loader有疑問。 在我的情況,我把我自己的類,它擴展AsyncTaskLoader並返回MyObject來的List我可以在同一活動中同時運行多個裝載機嗎?

public class MyActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<List<MyObject>> { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     getLoaderManager().initLoader(1, null, this); 
     getLoaderManager().initLoader(2_ID, null, this); 
     getLoaderManager().initLoader(3_ID, null, this); 
     ... 
    } 

} 

我的問題是:我可以在同一時間在同一Activity運行許多Loader

每個加載程序,當其loadInBackground()方法完成後,請致電方法在我的Activity中強制執行?

預先感謝您。

回答

1

是的,我們可以在與唯一ID一個活動的時間運行許多裝載機,裝載機因爲是一個異步過程。請在下面找到示例模板。

public class SampleActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> { 
    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sample); 
     initLoaders(); 
    } 

    private void initLoaders() { 
     getLoaderManager().initLoader(1, null, null); 
     getLoaderManager().initLoader(2, null, null); 
     getLoaderManager().initLoader(3, null, null); 
    } 

    @Override 
    public Loader<Cursor> onCreateLoader(int id, Bundle args) { 
     CursorLoader cursorLoader = null; 
     switch (id) { 
      case 1: 
       cursorLoader = new CursorLoader(this, CONTENT_URI, 
         PROJECTION, selection, null, null); 
       break; 

      case 2: 
       cursorLoader = new CursorLoader(this, CONTENT_URI, 
         PROJECTION, selection, null, null); 
       break; 

      case 3: 
       cursorLoader = new CursorLoader(this, CONTENT_URI, 
         PROJECTION, selection, null, null); 
       break; 
     } 
     return cursorLoader; 
    } 

    @Override 
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) { 
     switch (loader.getId()) { 
      case 1: 
       if (data != null && data.getCount() > 0) 
        setData1(); 
       break; 

      case 2: 
       if (data != null && data.getCount() > 0) 
        setData2(); 
       break; 

      case 3: 
       if (data != null && data.getCount() > 0) 
        setData3(); 
       break; 
     } 
    } 

    @Override 
    public void onLoaderReset(Loader<Cursor> loader) { 

    } 
} 
+0

謝謝你的男人:) – MDP

相關問題