최근 3.1 로 업데이트를 했다 그런데 이놈이 문제가 너무 많다 자동완성기능도 전보다 불편해졌고 제일 불편한점은 리소스 id가 바로바로 적용이 되지 않는다는 점이다 왜 아이디를 추가하고 clean project 를 해주지 않으면 리소스 추가가 되지 않는거지 ?? 게다가 나는 databinding 을 쓰는데 더욱더 심각하다 아이디를 추가하고 rebuild project 를 몇번이고 해주어도 binding 으로 객체를 가져올수가 없다 프로젝트를 껐다 켜야만 적용이된 꼬라지를 보고 downgrade 방법을 필사적으로 찾고있는 중이다 덕분에 작업은 올스탑 .. =========== 현재 업데이트 반응들 https://twitter.com/androidstudio/status/978391994086109184
This AsyncTask should be static or leaks might occur 내부 Handler 와 동일한 문제이다. non-static 내부 클래스는 클래스에 대한 참조를 그것을 포함하는 Activity 클래스 보다 오래 가지고 살아있기 때문에 GC가 되지 않아, Memory Leak 이 발생할 수 있다고 한다 이를 해결하려면 익명, 로컬 및 내부 클래스 대신 정적 중첩 클래스를 사용하거나 최상위 클래스를 사용해야 한다고 한다. 그러나 문제점으로 UI View 또는 멤버 변수에 접근하지 못한다는 것인데, 이에 솔루션으로 WeakReference 를 만들어 준다. 123456789101112131415161718192021222324252627282930313233343536373839..
Glide clear cache 파일 이름은 해시된 키이므로 특정 URL 또는 파일 경로에 해당하는 캐시된 파일을 모두 디스크에서 삭제하는 것이 좋습니다. 원본 이미지를 로드하거나 캐시 할 수만 있다면 문제가 더 간단해질 것입니다. 실제로 캐시 파일을 무효로 하는 가장 좋은 방법은 내용이 변경되면 (예 : url, uri, 파일경로 등 ) 식별자를 변경하는 것입니다. 파일 경로를 변경할 수 없으므로 Glide는 메모리와 디스크 캐시 키에 추가 데이터를 섞어서 캐시된 데이터가 무효화되는 시점을 효과적으로 제어 할 수 있도록 signature() API 를 제공한다. ..
php, 웹 서버에 이미지 업로드
Retrofit, POST parameters 123456@POST("repo/item")Call getItem( @Field("id") id );cs 위와 같이 하면 ,@Field parameters can only be used with form encoding. 에러를 발생시킨다 1234567@FormUrlEncoded@POST("repo/item")Call getItem( @Field("id") id );cs @FormUrlEncoded 를 추가시켜주어야 정상적으로 parameter가 붙어 전송된다 @FormUrlEncoded 어노테이션을 메소드에 명시하면 form-encoded 데이터로 전송된다. 각 key-value paire 의 key는 어노테이션 값에, value는 객체를 지시하는 @Fie..
Fragment setCustomAnimations() R.animator.slide_up 123456789cs R.animator.slide_up 123456789cs 애니메이션 적용 1234567getFragmentManager().beginTransaction() .setCustomAnimations(R.animator.slide_up, R.animator.slide_down, R.animator.slide_up, R.animator.slide_down) .add(R.id.list_fragment_container, Fragment) .addToBackStack(null).commit();cs 메서드를 호출하는 순서가 중요하다고 한다 실제로 내 경우 setCustomanimations() 를 add..
Fragment add(), replace(), BackStack 기본적으로 Fragment가 Activity의 View에 올라가면, onAttach -> onCreate -> onCreateView -> onCreateanimator -> onViewCreated -> onActivityCreated ->onStart -> onResume -> 의 흐름이고 Activity에서 제거가 된다면 onPause -> onStop -> onDestroyView -> onCreateAnimator -> onDestroy -> onDetach 의 순으로 호출이 된다. attach/detach는 Activity에 '포함' 되는 과정을 일컫는다. add() 기존 Fragment를 그대로 둔 채 (onStop 호출하지 ..
Hide FAB on scroll(Recyclerview에서 스크롤시 FloatingActionButton 숨기기) fdRecyclerview.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { if (dy 0) { fdFab.hide(); } } });
Avoiding Memory Leaks 안드로이드 애플리케이션은, 적어도 T-Mobbile G1 에서는 16MB의 힙으로 제한된다. 그것은 전화를 위한 많은 메모리이고 개발자가 달성하기를 원하는것에는 거의 없다. 이 메모리를 모두 사용하지 않는 경우에도, 다른 응용프로그램을 죽이지 않고 실행할 수 있게 하려면 가능한 작게 사용해야 한다. Android가 메모리에 보관할 수 있는 응용프로그램이 많을수록 사용자가 응용프로그램을 전환하는 속도가 빨라진다. 내 작업중에 안드로이드 애플리케이션에서 메모리 누출 문제가 발생했고, 같은 실수로 대부분의 시간을 보냈다. ( Context에 대한 장기간의 레퍼런스를 유지) 안드로이드에서 Context는 많은 연산에 사용되지만 대부분은 리소스를 로드하고 액세스한다. 이것은..