Я пытаюсь постоянно обновлять пользовательский интерфейс в зависимости от длительных выходных данных службы.
По сути, я хочу отображать и добавлять список пользователей по одному после того, как они будут обработаны связанной службой.
MainActivityViewModel
public class MainActivityViewModel extends ViewModel {
private MutableLiveData<User> user = new MutableLiveData<>();
private MutableLiveData<MyService.MyBinder> mBinder = new MutableLiveData<>();
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className, IBinder iBinder) {
MyService.MyBinder binder = (MyService.MyBinder) iBinder;
mBinder.postValue(binder);
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
mBinder.postValue(null);
}
};
public ServiceConnection getServiceConnection(){
return serviceConnection;
}
public LiveData<User> getUser(){
return user;
}
public LiveData<MyService.MyBinder> getBinder(){
return mBinder;
}
}
Мой сервис
public class MyService extends Service {
private final IBinder mBinder = new MyBinder();
private Handler mHandler;
@Override
public void onCreate() {
super.onCreate();
mHandler = new Handler();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return mBinder;
}
public void starFetchingUsers(User obj){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
/**********************************************************/
Здесь я буду отправлять POST метод один за другим 100 раз и получу
ответ как пользовательский объект, который должен быть liveData. Так что когда-то этот объект
изменяется после следующего метода публикации, я хочу, чтобы он отображался или добавлялся в пользовательский интерфейс.
Как связать эту переменную объекта динамического пользователя с пользователем MutableLiveData, созданным в классе MainActivityViewModel? так что это автоматически обновляется в пользовательском интерфейсе.
/**********************************************************/
}
});
thread.start();
}
public class MyBinder extends Binder{
MyService getService(){
return MyService.this;
}
}
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
stopSelf();
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
Пожалуйста, дайте мне знать, что мне не хватает в обоих классах.