본문 바로가기
반응형

Android 개발/Android43

SparseArray 가 무엇인가요? HashMap의 키값으로 Integer를 사용하면, Android스튜디오가 퍼포먼스 향상을 위해서 SparseArray를 사용하라고 하는 것을 본적이 있으신가요?저도 종종 보게되는데요. 오늘은 이 SparseArray에 대해서 간단히 정리해보도록 하겠습니다. 1. SparseArray SparseArray는 integer값을 Objects에 매핑을 해주는 것인데요.특이한 점은, 각 인덱스 사이에 공간을 만들수 있다는 것입니다.(예를 들면, 1~10번에 아이템들이 있고, 그다음에 11~20번은 비우고, 30~40번에 아이템들을 넣을 수 있다는 것이죠.) 성능향상을 위해서 SparseArray는 데이터가 지워지면, deleted로 표시하고 그 공간을 비워놓습니다.(물론, 지워진 데이터의 키값을 주고 데이터를.. 2017. 3. 29.
안드로이드 Notification 구현하기 feat. Big View 모바일 앱에서 매우 중요한 스펙중하나가, 유저에게 정보를 알려줄 수 있는 Notification인데요.오늘은 이 기능에대해서 정리해보려고 합니다. 유저에게 정보를 알려줄 때에 사용하는 클래스는 NotificationBuilder 클래스인데요.하위호환성을 위해서, 구글에서 제공해주는 Support라이브러리의 NotificationCompat.Builder클래스를 사용해야합니다. 1. Noti버튼 XML 생성 먼저 아래와 같이, Notification을 생성하는 버튼을 XML파일에서 만들겠습니다. 2. Notification Builder 필수 메소드 구현 제일 먼저 구현해야하는 것은 NotificationCompat.Builder클래스입니다.필수로 구현해야하는 메소드는, 아래에서 구현한 것과 같은데요.아이.. 2017. 3. 21.
Callable 과 Runnable 뭐가 다른가요? 이전 글에서 Thread에 대해 정리하면서,Runnable에 대해서도 정리하였었는데요. 오늘은 Callable과 Runnable을 비교해 보도록 하겠습니다. 참고로 이전에 Runnable을 정리한 글은, 아래링크를 참조해 주세요.>>> 안드로이드의 Multi Thread, Runnable, Looper 그리고 Handler 2017. 3. 18.
Parcelable 을 사용해 데이터를 전달해 보자 안드로이드에서 Intent를 통해서 Activity로 data를 전달할 때, String이나 int같은 기본형이 아니고, 객체로 전달해야 할 때가 있습니다. 이때 Java에서 제공하는 Serializable을 implement하면 ,객체를 직렬화해주고, 다시 복원할 수 있게 해주구요. putExtra()에 인자로 넣어서 넘겨주기만 하면되니,구현해야할 메소드도 없어, 사용하기도 편리합니다. 참고로 아래링크에서 Serializable에 대해서 볼 수 있습니다.(Activity로 Object넘겨줄 때엔 Serializable) 그런데, 한가지 방법이 더 있습니다.바로 Parcelable이라는 interface를 사용하는 것입니다.구현하기는 좀더 복잡하기는 하지만,Java에서 재공해주는 Serializable보.. 2017. 3. 13.
AlarmManager 로 구현하는 안드로이드 알람 안드로이드에서 앱을 만들다 보면,Alarm기능을 구현해야 할 때가 있습니다. 본격적인 알람앱이 아니어도,유저가 원하는 시간에 어떠한 노티가 와야 하는경우가 있기 때문인데요. 오늘은 Alarm기능에 대해서 정리해 보겠습니다. 1. Alarm 기능의 구현 안드로이드에서 Alarm은, 안드로이드 시스템의 AlarmManager에게 알람기능을 부탁하여 실행되도록 하는데요.이 AlarmManager에게 어떤 receiver를 호출할지에 대한 intent를 가지고 있는 PendingIntent와 얼마나 delay 된 후 실행시킬지를 알려주어서 set을 해줍니다. Alarm이 set되면, 정해진 시간에 AlarmManager가 receiver에게 broadcast 해주고,receiver가 이를 받아서 service를.. 2017. 3. 13.
CompileSdkVersion, MinSdkVersion, TargetSdkVersion 그리고 BuildToolsVersion 안드로이드 작업을 하면서, 최신버전으로 라이브러리로 업데이트하는일이 많은데요. 특히나, 구글에서 제공해주는 design, recyclerview, cardview 같은 라이브러리를 추가해보면, 계속 최신버전으로 업데이트 되는데요. 그런데, 이상하게 build.gradle에 최신버전으로 위의 라이브러리들을 추가하면, 아래이미지와 같이 빨간줄이 있는 경우가 있습니다. 뭐가 문제지? 하고 줄이 간곳에 마우스를 올려보니 아래와 같이 나왔습니다. compileSdkVersion이 23인데, 제가 25버전의 라이브러리를 추가했다 이거죠. "음. 그럼, compileSdkVersion을 25로 올리면 되겠구나" 하는 생각이 들긴 하는데요. 그렇다면, compileSdkVersion이라고 하는 건 뭘까요? 1. com.. 2017. 3. 12.
Activity 와 Fragment 의 lifecycle (생명주기) 안드로이드는 에서 Activity와 Fragment의 lifecycle(생명주기)에 맞추어 개발을 하는 것이 매우 중요한데요. 오늘은 Activity와 Fragment의 생명주기에 관해서 정리해보겠습니다. 1. Activity 생명주기 먼저, Activity에 대해서 정리해볼텐데요,아래 이미지를 보시면서 전체 흐름에 대해서 보고, 하나씩 정리해보도록 하겠습니다. 1-1. OnCreate () 액티비티가 Launch되고 나서, 최초에 실행될 때, 호출 됩니다. 액티비티에 필요한 리소스들을 여기서 초기화 해주는데요. Button이라든가 EditText를 예로 들 수 있겠습니다. 1-2. OnStart () 유저에게 액티비티가 보이도록 해주는데요. 이 단계는 매우 빠르게 끝나고, onResume() 상태로 들.. 2017. 2. 18.
Manifest 에서 Activity 속성 Android 최근 사용합 앱에서 제외시키기 특정 액티비티 실행후에 유저가 우측하단의 'ㅁ'키를 누르면, 최근 사용한 앱들이 나오는 데요.아래의 이미지와 같습니다. 그런데, 이 화면에 최근실행된 액티비티가 나오지 않아야 하는 경우도 있습니다.나오지 않아야 한다는 것은, 유저가 다시 실행시키지 않도록 해야한다는 것인데요.액티비티의 실행 조건이 있어서, 단순히 Back해서 돌아가지는 않도록 해야하는 경우겠네요.보통 Service를 실행시켜서 동작시키는 Activity의 경우가 많을 것 같구요. 그렇다면, 이 설정은 어떻게 하는 것일까요?두가지 방법이 있는데요,Manifest에서 선언을 해주거나, Intent에 Flag를 달아주는 것입니다. 하나하나 보면서 정리해 보겠습니다. 2017. 2. 13.
안드로이드 에서 Shake (흔들림) 감지 하기 안드로이드에서 사용자가 shake하는 모션을 감지해내야 할때는 어떻게 해야할까요?오늘은 안드로이드 시스템에서 제공해주는, SensorManager를 이용해서 Shake를 감지하는 방법에 대해서 정리해보겠습니다. 1. SensorManager 얻어오기 Context.getSystemService() 를 통해서 SensorManger객체를 얻어올 수 있는데요.얻어오는 것 뿐만이아니라, 사용하지 않을 때, disable하는 것은 매우 중요합니다.이 Manager를 사용하는 것이 Battery를 소모시키기 때문입니다. 먼저, SensorManger를 얻어오겠습니다. 다음으로, 사용자의 움직임을 Listening할 수 있도록, SensorEventListener를 implement해줄깨요.구현해야할 메소드들이 나.. 2017. 2. 7.
bundle 객체로 보낸 데이터를 onActivityResult 로 받아오기 안드로이드 앱개발을 하면서,액티비티간에 데이터를 주고받는 경우가 있는데요. 보통은, intent객체를 생성해서 putExtra()메소드의 인자로 데이터를 실어서 보낸다음, startActivity 메소드에 intent객체를 인자로 주어서, 액티비티간에 데이터를 주고 받았는데요. 이번에는 startActivityForResult를 이용해서 데이터를 주고받는 경우에 대해서 정리해보겠습니다.이 경우는 요청했던 액티비티가 종료되는 시점에, 어떤 데이터를 받아오고 싶을때 사용하는데요. 예를들면, 설정화면인 Activity_A가 알람소리를 선택하도록 Activity_B를 요청하고,알람소리의 리스트화면인 Activity_B에서 선택된 아이템의 종류를 선택하고 확인버튼을 누르면,그 값을 Activity_A에게 다시 전.. 2017. 1. 24.
Fragment 에서 Activity 로 데이터 전달하기 안드로이드 앱을 개발하다보면,Fragment에서 Activity로 데이터를 보내는 일이 생기는데요.오늘은 이 방법에 대해서 정리해보겠습니다. 사실, 데이터를 보내는 방법은 다른 방법들이 있을 수 있겠지만,이 글에서는 interface를 이용해서 보내는 방법을 사용하도록 하겠습니다. 참고로, inteface에 관해 정리한 글은 아래링크에서 볼 수 있어요~.>>>> 안드로이드를 위한 자바 인터페이스 #다중상속 #콜백 2017. 1. 16.
Android 에서 패키지명 ( Package Name ) 변경 하기 안드로이드 개발을 하다가 패키지 명을 바꾸고 싶을때가 있습니다. 패키지명은 개발이 끝나고 나서도, 웹에 다운로드링크를 남길때라든가, 은근히 사용하는 곳이 많은데요. 일단 개발시작하고나서도 바꾸는 것은 그렇게 어렵지 않습니다. 아래에서 실제 변경해보면서 정리해보겠습니다. 1. 패키지 디렉토리명 변경 실제 디렉토리명을 변경하기전에 해야 할 것은, 안드로이드 스튜디오 내에서 패키지의 논리적구조를 합쳐서 보여주는 옵션을 해제해주는 것인데요. 이는 수정하는 패키지 디렉토리를 선택해서 개별적으로 수정해주기 위해서입니다. 예를들면, com.tester.project => com.supertest.project 로 바꾸어 줄경우, tester디렉토리만 선택해서 supertest로 바꾸어 주면 됩니다. 먼저, 안드로이드.. 2017. 1. 14.
Android 에서 Activity로 Object넘겨줄 때엔 Serializable Activity로 데이터를 넘기고 싶을 때, Intent로 PutExtra()메소드를 사용하여 데이터를 넘기는데요. 넘길 데이터가, 스트링 한두개가 아닌 경우도 있습니다. 예를 들면, 데이터 클래스가 다음과 같은 경우죠. 물론, 이런 데이터들 서버에서 받아서, 만능 ArrayList로 만들어서 넘길수도 있고, HashMap같은 게 필요할 때는 그것을 사용할 수도 있겠죠. 하지만, 당연하게도, Object를 넘길 수도 있습니다. 이 때, 데이터 클래스에서 implement하면 되는 것이 바로 Serializable입니다. 1. Serializable 적용 적용은 어떻게 할까요? 네, implements Serializable 요거면 됩니다. 우리말로 직렬화 인데요. 자바객체를 전송할 때, 다시 복원할 수 .. 2016. 12. 26.