본문 바로가기

[17일차] OkHttp 외 라이브러리들 개발계획서를 쓰는 이유 - 다른사람들이 팀으로 개발하기 때문에 - 내가 빼먹는걸 기입하기 위해 문제점 - 안드로이드에서 사용하기 위한 Thread/Handler 메커니즘 제공 안됨 아씨 빌더 뭐지 ? CookieManager cookieManager = new CookieManager() OkHttpNetworkManager 클래스 싱글톤으로 만들기 okhttp, okhttpurlconnection 두개 dependency에 추가 하기 . 근데 이거 말고 https://github.com/franmontiel/PersistentCookieJar project에 repositories라는 라이브러리 등록되있는 곳에 allproject에서 하면 전체 프로젝트에서 다 하고 싶으면 여기다 하고 이 앱에서만 하고.. 더보기
[16일차] 이미지 리퀘스트 이미지는 URL형태로 온다. 비트맵으로 크기를 얻어와서 Scale해서 뿌린다. BitmapFactory.options opts = new BitmapFactory.Options(); opts.inJustDecodeBounds = true;Rect outrect = new Rect(); BitmapFactory.decodeStream(is,outrect,opts);.opts.inSampleSize = 4 ;// 1/4 씩 줄이는 거다. 디코드를 두번하기 위해서는 다시 처음으로 돌아가서 해줘야하는데 네트워크는 하지 못한다 그래서 Picasso라는 라이브러리를 쓰면 캐싱이나 이런 처리를 알아서 해준다. 더보기
[16일차] 구조화 2 NetoworkManager Network에서 데이터를 가져와서 넘겨주는 역할을 담당하는 Model class. 디자인 패턴은 singleton으로 ! 보통 데이터를 얻어오는 애들은 Manager라고 한다. Singleton으로 대개 만든다. 멀티스레드 환경에서 동시에 접근할 수 있기 때문에 이걸 쓴다. 성능 이슈 때문에 if(instance ==null) 을 바깥에 한번 더 해준다. 객체가 생성 되있을 때는 그냥 통과하게 만들어야 함으로 if 문을 한번 더 넣는다. Thread 이슈Retry일시적으로 연결이 안됬을 때, 다시시도하는 걸 보낸다. Cancel캔슬 처리 Retry 나 이런건 라이브러리를 쓸거기 때문에 안한다. 캔슬처리를 안해주면 화면을 갱신하는 액티비티가 죽어서 Exception 이 난다... 더보기
[15일차] 네트워크 매니져, 네트워크 리퀘스트 NetworkManager를 이용한 Tstore 를 만든다. 데이터를 요청해서 처리하는 Manager 클래스를 만들 것이다. 그럼 매니져에서만 받아서 처리하게 된다. 왜냐면 싱글톤으로 만들거니까 NetworkMager 에서 검색은 메인쓰레드 에서 못하기때문에 Executor mExecutor; 라는 것을 띄운다. BlockingQueue task private networkmanager(){ mExecutor = new ThreadPoolExecutor(3개, 최대 64개, 3초간, TimeUnit.Seconds,taskqueue)} 요청을 보내는 아규먼트들을 관리하는 NetworkRequest를 만든다. 그건 Runnable을 상속받아 만든다. public abstract URL getURL() thr.. 더보기
[15일차]구조화 MVC 패턴 View 라고 하는거는 ㄴ사용자와의 인터페이스 Controll - Design Pattern 문제를 어떻게 해결할 것인가에 대한 일반적인 Template이나 방법론을 말한다. Creation PatternAbstractFactory 라고 하는게 있다. Builder 생성할때 생성과 관련한 아규먼트는 정말 많다. 아규먼트에 종류가 많으면 문제가 있으니까 그런것들을 block으로 조합하듯이 생성하는데 필요한 값들을 설정하면 알아서 객체로 넘겨주는거다. Factory 메소드 객체에 따라서 A1,A2,A3 이렇게 생성될 수 있지만, 그걸 내가 알 필요는 없다. 예를들어 BitmapFactory 에서 넘어오는 객체는 Bitmap 객체라는 것만 알면 된다. 이럴 때 쓴다. StructualPattern.. 더보기
[15일차] Proxy, Pasing HTTP - Parameter 전달 (GET) URL은 반드시 encoding 해서 써야 한다. Base64 쿼리에 보내는방식 urlencoded, json, xml,form-data, 서로 다른형태는 multipart/form-data 이다. 이런 multipart는 오픈소스를 이용해서 쓴다. content type 이 뭐다 이런거다. redirect 기본이 알아서 해준다. CookieManager cookieManager 등록 해주면 사용할 수 있다. 쿠키값을 메모리에만 유지하기 때문에 이렇게만 사용해서 껏다 키면 날라간다. 계속 유지하고 싶으면 File에 저장해야한다. PersistentCookieStore(Context), 를 이용하는데 나중에 한다. Client에서 강제로 Cookie 추가 할 .. 더보기
[14일차]네트워크 전반적인 용어 인터넷 퍼미션은 런타임 퍼미션 획득할 필요는 없다. 안드로이드 네트워크는 메인스레드에 쓸 수 없다. 별도의 Worker Thread를 만들어서 처리하고 Handler를 만들어서 메인쓰레드에 보내줘야한다. 인터넷 퍼미션을 얻지 못했을 때 , security어쩌구 저쩌구 뜬다. 버전별 버그들을 좀 알아야 겠다. 일반적으로 네트워크는 별도의 라이브러리를 사용하여 작성한다. HTTP를 이용해서 데이터를 주고 받을 것이다. 장점은 네트워크를 통해 생길 수 있는 여러가지 문제점을 규격으로 미리 다 정의 했다. Request Message Request Method RequestHeader - 내가 보낸 데이터를 어떻게 처리 할건지 URLconnection 주소를 통해서 데이터를 요청하는 객체 접속은 Connect(.. 더보기
[14일차]네트워킹 3권.. 데이터를 얻는 방법에 대한 것들을 알아본다. 안드로이드 시스템이 제공하는 데이터를 알아본다. 네트워킹이 어떤 것인지 살펴볼까요 ??????????????????????????????????????????? 네트워크는 망망망망망망마앙망망망망망망망망망망망망망망망망망망망망망 Internet (Internetworking) 네트워크와 네트워크를 연결한 네트워크 TcpIp규격에 의해 만든 망 네트워크 프로그래밍 이라고 하는거는 컴퓨터 네트워크 상에서 어떻게 데이터를 주고 받을 것이냐. 규격을 만드는 거다. 데이터의 규격 그격에 따라 데이터를 처리하는 작업이 네트워크 프로그래밍이다. 규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙규칙 LAN MAN WAN - 규모에 따라 나누기 Circuit.. 더보기
[14일차] Drag And Drop Drag and Drop안드로이드에서 이 기능을 사용하는 것은 api 11 부터 이다. startDrag() 하면 드래그를 시작할 수 있다. View를 이용해서 어떻게 만들거냐 하는게 DragShadowBuilder 드래그 정보를 받고 싶으면 OnDragListener를 등록하면 된다. 아니면 onDragEvent()메소드를 override하여 DragEvent를 받을 수 있다. 일반적으로 받으려고 하려면 ACTION_DRAG_STARTED true를 해줘야한다. ClipData안드로이드에서 다른 앱에 ClipBoard나 드래그 앤 드롭을 통해 전달할 정보를 담기 위해 사용하는 class. 그래그 드롭으로 정보를 전달하는 것이다. DragEventx,y값은 start,location,drop할때만 얻을 .. 더보기
[14일차]SurfaceView surface 그림그릴수 있는 객체를 얻어올 수있는 게 surface 이다. 자신의 크기만한 윈도우를 생성해준다. 근데 이거는 Input이 안된다. 거기서 Canvas를 얻어와서 그림그리고 출력해주면 된다. 리스너를 써서 surface가 생성됬을때를 알아야 한다. surfaceHolder가 관리한다. surface뷰 내에서 생성된 surface를 관리한다. sufaceHolder에 콜백함수를 등록하면 surface에 상태에따라 함수가 호출된다. getSurface해서 surface를 얻어올 수 잇다. lockCanvas라는 함수가 있어서 Canvas를 얻어 올 수 있다. 여기서 얻어서 그리고 , unLockCanvasHost함수로 출력을 할 수 있다. 메인쓰레드만 화면그리기가 됬지만, 이건 메인쓰레드일 .. 더보기