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는 많은 연산에 사용되지만 대부분은 리소스를 로드하고 액세스한다. 이것은..
failed to resolve : android.arch compile "android.arch.lifecycle:runtime:1.0.0-alpha1" compile "android.arch.lifecycle:extensions:1.0.0-alpha1" annotationProcessor "android.arch.lifecycle:compiler:1.0.0-alpha1" 를 추가하는 중에 build 가 되지 않아 골머리 썪고 있었는 데 maven(){ url "https://maven.google.com" } 이것을 maven(){ url "https://dl.google.com/dl/android/maven2/" } 로 바꿔주어 빌드 성공
static member accessed via instance reference 만약 이러한 코드가 있을 때, 1234public class MainViewModel { public static final ObservableArrayList nodeArr = new ObservableArrayList(); public static final ObservableArrayMap nodeSetMap = new ObservableArrayMap();}Colored by Color Scriptercs 이렇게 호출하면 해당 경고 메시지를 보여준다 1viewModel.nodeSetMap.get(Code.PW)cs 내용은 클래스 자체가 아닌 viewModel 인스턴스를 통해 정적 List를 호출하기 때문이라고 한다...
ViewHolder 클래스 만들기 1234567891011121314public class MyVh extends RecyclerView.ViewHolder{ private final ItemBinding binding; public MyVh(ItemBinding binding){ super(binding.getRoot()); this.binding = binding; } public void bind(Item item){ binding.setItem(item); binding.executePendingBindings(); }}Colored by Color Scriptercs 변수나 Observable이 변경되면 바인딩이 다음 프레임 전에 변경되도록 예약을 한다. 하지만 바인딩을 즉시 실행해야 할 때가 ..
Handler.handleMessage() 사용 123456789101112131415161718192021222324252627282930313233343536private final MyHandler handler = new MyHandler(this); private static class MyHandler extends Handler { private final WeakReference weakReference; public MyHandler(MainActivity activity) { this.weakReference = new WeakReference(activity); } @Override public void handleMessage(Message msg) { switch (msg.what..
Reachability GC는 reference의 강약에 따라 도달 가능한 객체를 제외하고모두 쓰레기로 간주한다 GC의 관점에서는 객체를 참조가 가능한 객체와 참조할 수 없는 객체로 본다즉, 내가 다시 사용할 수 있냐, 없냐를 보고없으면 쓰레기통으로 넣어버리는 것이다 Reference Object는 참조의 강약에 따라 Strong Reference, SoftReference, WeakReference, Phantom Reference로 나누고순서대로 참조가 강하다 * 하나의 객체가 Strong과 Weak 참조가 있다면 그 객체는Strong한 객체로 생각한다 Strong Reference Strong Reference는 new를 이용해 생성된 객체를 말한다이 객체는 GC에서 무조건 제외되기 때문에 Memo..