2017-07-24 5 views
1

Wie wechseln Sie von AsyncTask zu Loader? Muss ich eine neue Java-Klasse für Loader erstellen?Wie wird AsyncTask auf einfachste Weise zum Loader umgeschaltet?

Mein aktueller Code:

} 
private class ProcessJSON extends AsyncTask<String, Void, String> { 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     Toast.makeText(MainActivity.this, R.string.loading, Toast.LENGTH_SHORT).show(); 
    } 

    protected String doInBackground(String... strings) { 
     String stream = null; 
     String urlString = strings[0]; 

     GoogleAPI hh = new GoogleAPI(); 
     stream = hh.GetGoogleAPI(urlString); 
     return stream; 
    } 

Aber wollen Veränderung AsyncTask zu Loader. Wie? Tq.

Antwort

0
public class ProcessJSON extends AsyncTaskLoader<String> { 
public ProcessJSON (Context context) { 
    super(context); 
} 
@Override 
public String loadInBackground() { 
    return "ProcessJSON"; 
    } 
} 

Implementiert LoaderManager Callback in Ihrer Aktivität.

YourActivity

public class YourActivity extends Activity implements LoaderManager.LoaderCallbacks<String>{ 

@Override 
public void onCreate(Bundle bundle){ 
getSupportLoaderManager().initLoader(1, null, this).forceLoad(); 
} 

@Override 
public Loader<String> onCreateLoader(int id, Bundle args) { 
    return new ProcessJSON(YourActivity.this); 
} 
@Override 
public void onLoadFinished(Loader<String> loader, List<Employee> data) { 
//do something on finished 
} 
@Override 
public void onLoaderReset(Loader<String> loader) { 
//do something 
} 


} 
Verwandte Themen