2017-10-05 8 views
0

IO/17에 도입 된 ViewModel을 사용하고 있습니다.ViewModel에서 네트워크 작업 수행

다음 가이드 라인은 Android 개발자 페이지에서 제공하고 있습니다. https://developer.android.com/topic/libraries/architecture/viewmodel.html

다음은 샘플 코드입니다.

public class MyViewModel extends ViewModel { 
private MutableLiveData<List<User>> users; 
public LiveData<List<User>> getUsers() { 
    if (users == null) { 
     users = new MutableLiveData<List<Users>>(); 
     loadUsers(); 
    } 
    return users; 
} 

private void loadUsers() { 
    // do async operation to fetch users 
} 
} 

은 내가 'loadUsers()'방식으로 발리의 요청을 수행하고 싶습니다.

Volley.newRequestQueue(context).add(jsonObjectRequest); 

그래서 내 질문은 다음과 같이가 '을 맥락'이 필요하지만 나는

  1. 이 권장 (또는 가능)을 뷰 모델 내부 네트워크 작업을 수행하는 것입니다, 그것을 할 수 있습니까 ??
  2. 예 (가능하면) 어떻게할까요?
+0

내 대답은 ... 늦게 게시 ... VM에서 API 호출을 만들 수 있습니다. 그러나 내가 발리 슛을 사용하고 있었기 때문에 문제를 일으키는 컨텍스트 외부의 컨텍스트 (activity/fragment)를 전달하는 것이 유일한 문제였습니다. 개장을 통해이 문제를 해결했습니다. –

답변

0

Dagger 고려, 당신은 당신의 ViewModel에서 Volley에 대한 context 제공에 대해 걱정하지 않아도 그런 식으로.