package com.octo.android.robospice.motivations.loader;
import android.os.Bundle;
import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.AsyncTaskLoader;
import android.support.v4.content.Loader;
import android.util.Log;
import com.octo.android.robospice.motivations.R;
import com.octo.android.robospice.motivations.common.DemoFragmentActivity;
/**
* Based on http://stackoverflow.com/questions/9077212/update-progressbar-from- asynctaskloader
*
* @author sni
*
*/
public class LoaderDemoActivity extends DemoFragmentActivity implements LoaderCallbacks< Void > {
@Override
public void startDemo() {
getSupportLoaderManager().initLoader( 0, (Bundle) null, this );
}
@Override
public void stopDemo() {
getSupportLoaderManager().destroyLoader( 0 );
}
@Override
public String getDemoTitle() {
return getString( R.string.text_loader_example );
}
@Override
public String getDemoSubtitle() {
return getString( R.string.text_loader_name );
}
@Override
public String getDemoExplanation() {
return "loader.html";
}
@Override
public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
}
@Override
public Loader< Void > onCreateLoader( int id, Bundle args ) {
AsyncTaskLoader< Void > asyncTaskLoader = new AsyncTaskCounter( this );
asyncTaskLoader.forceLoad();
return asyncTaskLoader;
}
@Override
public void onLoadFinished( Loader< Void > arg0, Void arg1 ) {
progressBar.setProgress( MAX_COUNT );
Log.d( getClass().getSimpleName(), "Loader finished" );
}
@Override
public void onLoaderReset( Loader< Void > arg0 ) {
progressBar.setProgress( 0 );
Log.d( getClass().getSimpleName(), "Loader reset" );
}
static class AsyncTaskCounter extends AsyncTaskLoader< Void > {
AsyncTaskCounter( LoaderDemoActivity activity ) {
super( activity );
}
private static final int SLEEP_TIME = 200;
@Override
public Void loadInBackground() {
for ( int progress = 0; progress < MAX_COUNT && !isReset(); progress++ ) {
try {
Thread.sleep( SLEEP_TIME );
} catch ( InterruptedException e ) {
e.printStackTrace();
}
Log.d( getClass().getSimpleName(), "Progress value is " + progress );
Log.d( getClass().getSimpleName(), "getActivity is " + getContext() );
Log.d( getClass().getSimpleName(), "this is " + this );
}
return null;
}
}
}