본문 바로가기

Android

[17일차] OkHttp 외 라이브러리들



개발계획서를 쓰는 이유 


- 다른사람들이 팀으로 개발하기 때문에 

- 내가 빼먹는걸 기입하기 위해


문제점


 - 안드로이드에서 사용하기 위한 Thread/Handler 메커니즘 제공 안됨


아씨 빌더 뭐지 ? 


CookieManager cookieManager = new CookieManager()


OkHttpNetworkManager 클래스 싱글톤으로 만들기 


okhttp, okhttpurlconnection  두개 dependency에 추가 하기 .



근데 이거 말고 https://github.com/franmontiel/PersistentCookieJar



project에 repositories라는 라이브러리 등록되있는 곳에 allproject에서 하면 전체 프로젝트에서 다 하고 싶으면 여기다 하고 


이 앱에서만 하고싶으면 module.app에 repository에 추가 한다. 



추가한 다음 synchronize 한다. 



OKHttpClient client


OkHttpClient.Builder builder = new OKHttpClient();


Context context = null;

ClearableCookieJar cookieJar =
                new PersistentCookieJar(new SetCookieCache(), new SharedPrefsCookiePersistor(context));

이렇게 만든다음에 


builder.cookiejar(cookieJar);



한번 받은 애를 캐싱하는 법.

File cacheDir  = new File(context.getCacheDir(),"캐쉬디렉토리 이름 설정 static 상수로 지정해서 쓴다.")

if(!cacheDir.exists();){

  cacheDir.mkdirs();

}


Cache cache = new Cache(cacheDir,10*1024*1024);

builder.cache(cache);


builder.connectTimeout();


builder.connectTimeout;

builder.writeTimeout;

client = builder.builder();



//// context= null 여기서 객체를 가져오기 위해서 생성자에서context를 선언하기 위한 방법도 있지만, Application을 상속받은 크래스에서 Context static변수를 선언하고 onCreate() 함수를 선언한다. 



그리고 

가장 중요한게 menifest에 MyApplication을 등록해줘야한다. 


네트워크를 사용하는 시점에 null이 아니라는 것이 보장이 된다. 왜 ? 

https 를 쓰는 경우가 있는데 책을 보면된다.  공인인증서면 그냥 쓰면 되고, 공인받지 않은 것을 쓸 때는 사설인증서를 쓴다. 이걸로도 인증이 된 것 처럼 처리하는 것이 https Certificate Validation이다. 

OkhttpRequest 클래스를 생성 

Request를 담은 public abstract Request getRequest();

protected T parse(ResponseBody body); Okhttp 에 있는 객체이다. 



OkHttp 활용.

String postBody = gson.toJson(Object);


Request reqeust = new Request.Builder()
.url
.post
.build

일괄취소 . 


call을 호출하여 cancel 한다. 

근데 특정한 태그를 이용해서 cancel을 할 수 있다. 


request를 모두 취소 할 수 있고 

특정한 태그 가진 애들만 취소 할 수 있다. 

액티비티가 종료되면 onDestroy에서 다 취소 시킨다. 

backkey에 의해서 종료됬을때, 네트워크가 캔슬되지 않은 것을 해결할 수있다. ?

retry는 OkHttp가 알아서 해주고 있다. 

Retrofit

okHttp 랑 똑같은건데 어노테이션을 이용해서 구현할 수 있다. 

converter를 dependency에 추가해주면된다. 


서버에 있는 함수에 url을 적어준다. 



Volley

안드로이드용 라이브러리다. 유일하게 쓰레드를 만들어서 처리해준다. api9보다 크면 URLconnection을 사용한다. 그래서 개발이 힘들어서 잘 안쓴다. 

성능이 빠르고 그런건 잘짜면 되는 거기 때문에 별로 메리트가 없다. 

성ㄴㅇ이슈는 다 거짓말이다. 그렇게 될 수가 없다. 


쓰레드 풀 안쓰고, 날로 쓰레드 쓰고 어싱크테스크 쓴 것들이랑 비교 해서 좋다고 한거기때문에 성능이 좋을 수 가 없다. 


이미지 불러오는거 

Glide를 많이쓴다.  default성능은 이게 좋다. 

Picasso도 있다. 


디스크캐쉬는 disk cache.


'Android' 카테고리의 다른 글

[18일차] 파일  (0) 2016.08.10
[17일차] Glide 네트워크 상태처리, NSD  (0) 2016.08.09
[16일차] 이미지 리퀘스트  (0) 2016.08.08
[16일차] 구조화 2  (0) 2016.08.08
[15일차] 네트워크 매니져, 네트워크 리퀘스트  (0) 2016.08.05