Search in sources :

Example 1 with Loader

use of android.content.Loader in project android_frameworks_base by ParanoidAndroid.

the class LoaderTestCase method getLoaderResultSynchronously.

/**
     * Runs a Loader synchronously and returns the result of the load. The loader will
     * be started, stopped, and destroyed by this method so it cannot be reused.
     *
     * @param loader The loader to run synchronously
     * @return The result from the loader
     */
public <T> T getLoaderResultSynchronously(final Loader<T> loader) {
    // The test thread blocks on this queue until the loader puts it's result in
    final ArrayBlockingQueue<T> queue = new ArrayBlockingQueue<T>(1);
    // This callback runs on the "main" thread and unblocks the test thread
    // when it puts the result into the blocking queue
    final OnLoadCompleteListener<T> listener = new OnLoadCompleteListener<T>() {

        @Override
        public void onLoadComplete(Loader<T> completedLoader, T data) {
            // Shut the loader down
            completedLoader.unregisterListener(this);
            completedLoader.stopLoading();
            completedLoader.reset();
            // Store the result, unblocking the test thread
            queue.add(data);
        }
    };
    // This handler runs on the "main" thread of the process since AsyncTask
    // is documented as needing to run on the main thread and many Loaders use
    // AsyncTask
    final Handler mainThreadHandler = new Handler(Looper.getMainLooper()) {

        @Override
        public void handleMessage(Message msg) {
            loader.registerListener(0, listener);
            loader.startLoading();
        }
    };
    // Ask the main thread to start the loading process
    mainThreadHandler.sendEmptyMessage(0);
    // Block on the queue waiting for the result of the load to be inserted
    T result;
    while (true) {
        try {
            result = queue.take();
            break;
        } catch (InterruptedException e) {
            throw new RuntimeException("waiting thread interrupted", e);
        }
    }
    return result;
}
Also used : ArrayBlockingQueue(java.util.concurrent.ArrayBlockingQueue) Message(android.os.Message) OnLoadCompleteListener(android.content.Loader.OnLoadCompleteListener) Loader(android.content.Loader) Handler(android.os.Handler)

Example 2 with Loader

use of android.content.Loader in project android-demos by novoda.

the class ContactSelector method onActivityResult.

@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
    super.onActivityResult(reqCode, resultCode, data);
    switch(reqCode) {
        case (PICK_CONTACT):
            if (resultCode == Activity.RESULT_OK) {
                Uri contactData = data.getData();
                CursorLoader loader = new CursorLoader(this, contactData, null, null, null, null);
                loader.registerListener(LOADER_ID_CONTACT, new Loader.OnLoadCompleteListener<Cursor>() {

                    @Override
                    public void onLoadComplete(final Loader<Cursor> loader, final Cursor data) {
                        if (data.moveToFirst()) {
                            int nameColumnIndex = data.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME_PRIMARY);
                            String name = data.getString(nameColumnIndex);
                            txtContacts.setText(name);
                        }
                    }
                });
                loader.startLoading();
            }
            break;
    }
}
Also used : CursorLoader(android.content.CursorLoader) Loader(android.content.Loader) CursorLoader(android.content.CursorLoader) Cursor(android.database.Cursor) Uri(android.net.Uri)

Example 3 with Loader

use of android.content.Loader in project platform_frameworks_base by android.

the class LoaderTestCase method getLoaderResultSynchronously.

/**
     * Runs a Loader synchronously and returns the result of the load. The loader will
     * be started, stopped, and destroyed by this method so it cannot be reused.
     *
     * @param loader The loader to run synchronously
     * @return The result from the loader
     */
public <T> T getLoaderResultSynchronously(final Loader<T> loader) {
    // The test thread blocks on this queue until the loader puts it's result in
    final ArrayBlockingQueue<T> queue = new ArrayBlockingQueue<T>(1);
    // This callback runs on the "main" thread and unblocks the test thread
    // when it puts the result into the blocking queue
    final OnLoadCompleteListener<T> listener = new OnLoadCompleteListener<T>() {

        @Override
        public void onLoadComplete(Loader<T> completedLoader, T data) {
            // Shut the loader down
            completedLoader.unregisterListener(this);
            completedLoader.stopLoading();
            completedLoader.reset();
            // Store the result, unblocking the test thread
            queue.add(data);
        }
    };
    // This handler runs on the "main" thread of the process since AsyncTask
    // is documented as needing to run on the main thread and many Loaders use
    // AsyncTask
    final Handler mainThreadHandler = new Handler(Looper.getMainLooper()) {

        @Override
        public void handleMessage(Message msg) {
            loader.registerListener(0, listener);
            loader.startLoading();
        }
    };
    // Ask the main thread to start the loading process
    mainThreadHandler.sendEmptyMessage(0);
    // Block on the queue waiting for the result of the load to be inserted
    T result;
    while (true) {
        try {
            result = queue.take();
            break;
        } catch (InterruptedException e) {
            throw new RuntimeException("waiting thread interrupted", e);
        }
    }
    return result;
}
Also used : ArrayBlockingQueue(java.util.concurrent.ArrayBlockingQueue) Message(android.os.Message) OnLoadCompleteListener(android.content.Loader.OnLoadCompleteListener) Loader(android.content.Loader) Handler(android.os.Handler)

Example 4 with Loader

use of android.content.Loader in project android_frameworks_base by DirtyUnicorns.

the class LoaderTestCase method getLoaderResultSynchronously.

/**
     * Runs a Loader synchronously and returns the result of the load. The loader will
     * be started, stopped, and destroyed by this method so it cannot be reused.
     *
     * @param loader The loader to run synchronously
     * @return The result from the loader
     */
public <T> T getLoaderResultSynchronously(final Loader<T> loader) {
    // The test thread blocks on this queue until the loader puts it's result in
    final ArrayBlockingQueue<T> queue = new ArrayBlockingQueue<T>(1);
    // This callback runs on the "main" thread and unblocks the test thread
    // when it puts the result into the blocking queue
    final OnLoadCompleteListener<T> listener = new OnLoadCompleteListener<T>() {

        @Override
        public void onLoadComplete(Loader<T> completedLoader, T data) {
            // Shut the loader down
            completedLoader.unregisterListener(this);
            completedLoader.stopLoading();
            completedLoader.reset();
            // Store the result, unblocking the test thread
            queue.add(data);
        }
    };
    // This handler runs on the "main" thread of the process since AsyncTask
    // is documented as needing to run on the main thread and many Loaders use
    // AsyncTask
    final Handler mainThreadHandler = new Handler(Looper.getMainLooper()) {

        @Override
        public void handleMessage(Message msg) {
            loader.registerListener(0, listener);
            loader.startLoading();
        }
    };
    // Ask the main thread to start the loading process
    mainThreadHandler.sendEmptyMessage(0);
    // Block on the queue waiting for the result of the load to be inserted
    T result;
    while (true) {
        try {
            result = queue.take();
            break;
        } catch (InterruptedException e) {
            throw new RuntimeException("waiting thread interrupted", e);
        }
    }
    return result;
}
Also used : ArrayBlockingQueue(java.util.concurrent.ArrayBlockingQueue) Message(android.os.Message) OnLoadCompleteListener(android.content.Loader.OnLoadCompleteListener) Loader(android.content.Loader) Handler(android.os.Handler)

Example 5 with Loader

use of android.content.Loader in project android_frameworks_base by DirtyUnicorns.

the class RecentsCreateFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final Context context = inflater.getContext();
    final View view = inflater.inflate(R.layout.fragment_directory, container, false);
    mRecView = (RecyclerView) view.findViewById(R.id.dir_list);
    mRecView.setLayoutManager(new LinearLayoutManager(getContext()));
    mRecView.addOnItemTouchListener(mItemListener);
    mEmptyView = view.findViewById(android.R.id.empty);
    mAdapter = new DocumentStackAdapter();
    mRecView.setAdapter(mAdapter);
    final RootsCache roots = DocumentsApplication.getRootsCache(context);
    final State state = ((BaseActivity) getActivity()).getDisplayState();
    mCallbacks = new LoaderCallbacks<List<DocumentStack>>() {

        @Override
        public Loader<List<DocumentStack>> onCreateLoader(int id, Bundle args) {
            return new RecentsCreateLoader(context, roots, state);
        }

        @Override
        public void onLoadFinished(Loader<List<DocumentStack>> loader, List<DocumentStack> data) {
            mAdapter.update(data);
            // When launched into empty recents, show drawer
            if (mAdapter.isEmpty() && !state.hasLocationChanged() && state.action != ACTION_CREATE && context instanceof DocumentsActivity) {
                ((DocumentsActivity) context).setRootsDrawerOpen(true);
            }
        }

        @Override
        public void onLoaderReset(Loader<List<DocumentStack>> loader) {
            mAdapter.update(null);
        }
    };
    return view;
}
Also used : Context(android.content.Context) Bundle(android.os.Bundle) Loader(android.content.Loader) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) ImageView(android.widget.ImageView) View(android.view.View) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) ArrayList(java.util.ArrayList) List(java.util.List) DocumentStack(com.android.documentsui.model.DocumentStack)

Aggregations

Loader (android.content.Loader)16 Context (android.content.Context)10 Bundle (android.os.Bundle)10 Intent (android.content.Intent)5 OnLoadCompleteListener (android.content.Loader.OnLoadCompleteListener)5 Handler (android.os.Handler)5 Message (android.os.Message)5 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)5 RecyclerView (android.support.v7.widget.RecyclerView)5 View (android.view.View)5 ImageView (android.widget.ImageView)5 TextView (android.widget.TextView)5 DocumentStack (com.android.documentsui.model.DocumentStack)5 RootInfo (com.android.documentsui.model.RootInfo)5 ArrayList (java.util.ArrayList)5 Collection (java.util.Collection)5 List (java.util.List)5 ArrayBlockingQueue (java.util.concurrent.ArrayBlockingQueue)5 CursorLoader (android.content.CursorLoader)1 Cursor (android.database.Cursor)1