Dev/Android 125

Thread 중복 사용은 성능 나쁜 디바이스한테 안돼!

AsyncTask 와 TimerTask를 동시에 사용중이던 앱을 유지보수 하면서 좋은 환경의 디바이스에는 문제가 되지 않은것들이 성능이 떨어지는 디바이스에서는 나오기 시작했다. 현상 :G패드2 에서 각종 이슈가 나왔는데 오늘은 AsyncTask 와 TimerTask 를 중복으로 사용중이던 코드에서 문제가 발생했다. AsyncTask 를 돌리면서 내부에서 4초간의 TimerTask 를 같이 실행하는 부분이 있었다. 측정시간은 10초 이상으로 나왔다. 즉, 괜찮은 성능의 디바이스에서는 4초가 돌아갔었는데, G패드2 에서는 10초 이상이 걸렸다. 현재의 이슈들은 2016년형 갤럭시탭(테스트 기기)에서는 전혀 문제가 되지 않았었는데, 사용중이던 고객의 디바이스에서는 발생한 문제였다. 결론 : 그래서 해결책으로는..

Dev/Android 2017.11.23

Android Notification 설정 - Head Up

Android Notification 설정 Head Up 알림 띄우기 위한 방법 첫번째Notification.Builder.setFullScreenIntent(pendingIntent, true);setFullScreenIntent() 메서드를 통해서 Head Up 알림을 띄운다. 다만, 자동으로 Head Up 알림이 사라지지 않는다. 또한 setContentIntent(Intent) 메서드를 사용하지 않는다면 해당 알림을 눌러도 해당 Activity 로 이동되는 트리거 동작이 없다. 두번째Notification.Builder.setPriority(Notification.PRIORITY_MAX);Notification.Builder.setDefaults(DEFAULT_SOUND or DEFAULT_VIB..

Dev/Android 2017.11.15

데이터 저장 및 직렬화

보통 데이터 저장을 얘기할 때 영속화 라는 용어를 사용한다.저장 상태에서 데이터를 표현하는 방법을 설명할 때 직렬화 라는 용어를 사용한다. 안드로이드 기기에 영속성 데이터를 저장할 때 표준 API에서는환경설정 파일 과 SQLite 데이터베이스 두 가지 구조적 데이터 저장 방식을 기본으로 제공한다.환경설정 파일은 XML 형식으로 저장되며, SharedPreferences 클래스에서 관리한다.SQLite 데이터베이스는 주로 ContentProvider 컴포넌트로 감싸서 사용한다. 환경설정 파일에서는 단순 키/값 쌍만을 저장할 수 있다. (배열, 값 테이블, 바이너리 데이터를 저장하지 않음)SQLite 데이터베이스에서는 ContentProvider 를 통해 배열, 리스트를 보관한다. -- SharedPrefe..

Dev/Android 2017.10.28

BroadcastReceiver - LocalBroadcastReceiver / 브로드캐스트

애플리케이션 프로세스 내에서만 브로드캐스트를 주고받고 싶다면범용적인 Context.sendBroadcast() 대신 LocalBroadcastManager 를 사용해 볼 수 있다. 장점 :1, 프로세스 간 관리가 필요 없다2. 브로드캐스트와 관련한 보안 문제를 신경쓰지 않아도 된다. ** Broadcast 설정 **private BroadcastReceiver mLocalReceiver;private static final String LOCAL_BRODCAST_ACTION = "localBoradcastReceiver"; @Overrideprotected void onResume() {LocalBoradcastManager lbm = LocalBroadcastManager.getInstance(this..

Dev/Android 2017.10.26