Viewmodel + Asynctask en Android usando Jetpack
Ejemplo de
Viewmodel en Android usando el framework Jetpack de Google AndroidDependencias
Insertar la siguiente linea en archivo app.gradle
implementation 'android.arch.lifecycle:extensions:1.1.1'
Implementación
Crear un
AndroidVieMmodel por ejemplo PackageViewModel.javapublic class PackageViewModel extends AndroidViewModel {
private final String TAG = PackageViewModel.class.getSimpleName();
private YouAsynctask mAsyncTask;
private MutableLiveData<List<ApplicationInfo>> mPackagesAll;
public PackageViewModel(@NonNull Application application) {
super(application);
}
LiveData<List<ApplicationInfo>> getAllPackages() {
if (mPackagesAll == null) {
mPackagesAll = new MutableLiveData<>();
loadData();
}
return mPackagesAll;
}
private void loadData() {
mAsyncTask = new YouAsynctask();
mAsyncTask.execute();
}
public class YouAsynctask extends AsyncTask<Void, Float, Boolean> {
@Override
protected Boolean doInBackground(Void... voids) {
final PackageManager pm = getApplication().getPackageManager(); //get a list of installed apps.
List<ApplicationInfo> packagesAll = pm.getInstalledApplications(PackageManager.GET_META_DATA);
mPackagesAll.postValue(packagesAll);
return null;
}
@Override
protected void onPostExecute(Boolean aBoolean) {
super.onPostExecute(aBoolean);
}
}
}
Su uso
En la actividad donde queremos usar el viewmodel
private PackageViewModel packageViewModel;
...
packageViewModel = ViewModelProviders.of(this).get(PackageViewModel.class);
packageViewModel.getAllPackages().observe(this, new Observer<List<ApplicationInfo>>() {
@Override
public void onChanged(List<ApplicationInfo> applicationInfos) {
Log.d(TAG, "onChanged: " + applicationInfos.size());
}
});
Ejemplo muy básico de usar un viewmodel
.png)
0 comentarios: