dependencies {
implementation 'android.arch.lifecycle:extensions:1.1.1'
}
public class BackgroundTask extends ViewModel {
private MutableLiveData<String> resultLiveData;
public LiveData<String> getResult() {
if (resultLiveData == null) {
resultLiveData = new MutableLiveData<>();
startBackgroundTask();
}
return resultLiveData;
}
private void startBackgroundTask() {
new Thread(new Runnable() {
@Override
public void run() {
String result = performBackgroundTask();
resultLiveData.postValue(result);
}
}).start();
}
private String performBackgroundTask() {
return "Background task result";
}
}
public class MainActivity extends AppCompatActivity {
private BackgroundTask backgroundTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
backgroundTask = ViewModelProviders.of(this).get(BackgroundTask.class);
backgroundTask.getResult().observe(this, new Observer<String>() {
@Override
public void onChanged(String result) {
showToast(result);
}
});
}
private void showToast(String message) {
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}