반응형
* 2020.7.20에 작성한 포스트입니다.
간단히 줄이자면, 아래와 같다.
동기 : 요청과 결과가 동시에 일어남. 요청시 시간이 얼마나 걸리던 결과를 받아야 함. 설계가 간단하고 직관적이지만, 결과가 반환될때까지 대기해야 한다. 비동기 : 요청한다고 바로 결과가 주어지지 않음 설계가 비교적 복잡한 편이지만, 멀티테스킹이 가능함 |
retrofit2을 사용해서 통신하다가 삽질을 좀 했다.. 범인은 아래와 같다
public boolean retrofit(final String email){
final int PASSED_PROCESS = 0
RetrofitService rs = RetrofitService.retrofit.create(RetrofitService.class);
Call<String> call = rs.authEamilSend(email);
call.enqueue(new Callback<String>() {
@Override
public void onResponse(Call<String> call, Response<String> response) {
if (!response.isSuccessful()) {
Toast.makeText(con, "fail to get response. try again",
Toast.LENGTH_SHORT).show();
}
if (!response.body().equals("")) {
Toast.makeText(con, "통신성공", Toast.LENGTH_SHORT).show();
PASSED_PROCESS = 1
}
else{
Toast.makeText(con, "통신실패", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<String> call, Throwable t) {
Toast.makeText(con, "Connection error : " + t.toString(),
Toast.LENGTH_SHORT).show();
}
});
if(PASSED_PROCESS = 1)
return true;
return false;
}
머리가 빈 상태로 저런식으로 모자라게 코드를 짰었는데... 아우.. 멍청이...ㅋㅋㅋㅋㅋㅋ
내 머릿속 : 헤헤 call.enqueue 수행하고 통신이 성공하면 참값을 리턴하겠지?
현실 : 어림도없지 enqueue 콜백 안기다리고 바로 거짓 리턴 ㅎㅎ
Retrofit2는 기본적으로 OkHttp를 네트워킹 계층으로 활용하여 그 위에 구축하므로...
call.enqueue 대신 call.excute를 사용할수도 있다.
Call<String> StringData = call.execute().body():
아숑하면 StringData 변수 안에 동기적으로 데이터가 들어가게 된다.
근데 재활용 필요없이 해당 작업만 사용해서 쓸꺼면 이렇게 쓰는거보다 AsyncTask가 훨씬 편리하고 쉬운거 같다...ㅎㅎ
private class DownloadFilesTask extends AsyncTask {
@Override
protected void onPreExecute() {
super.onPreExecute();
//작업전 실행되는 메서드 (다이얼로그를 띄운다던지..)
}
@Override
protected String doInBackground(URL... urls) {
//받은 URL을 통해 할 작업
return total;
}
@Override
protected void onProgressUpdate(Integer... progress) {
//경과에 따른 페센테이지 작업
}
@Override
protected void onPostExecute(String result) {
//백그라운드 작업이 종료되고 받은 결과값으로 할 작업 입력
}
}
하지만 deprecated 되었으니... ㅠㅠ
반응형
'IDE & Framework > Android' 카테고리의 다른 글
Custom ListView 만들기(1/2) - 설계 (0) | 2021.06.05 |
---|---|
LayoutInflater는 무엇일까? (0) | 2021.06.05 |
margin과 padding 차이 (0) | 2021.05.08 |
Android Activity 수명주기란? (0) | 2021.05.07 |
Manifest 파일이란? (0) | 2021.05.07 |