본문 바로가기
반응형

Android 개발/Android40

카카오톡이나 페이스북에서 사용하는 HashKey 얻어오기 #Android 오늘은 KakaoTalk이나 FaceBook의 API를 이용할 때 사용하는 HashKey를 얻는 방법에 대해 정리해 보겠습니다. 보통 Debug용과 Release용 해쉬키가 모두 필요한데요. 각각의 해쉬키를 어떻게 얻는지 하나씩 정리해 보도록 하겠습니다. 1. Debug용 해쉬키 카카오SDK의 경우 이러한 해쉬값을 구하는 함수를 제공해 주고 있는데요. SDK를 implement하였다면, 아래 코드를 실행시켜주면 값을 얻어올 수 있습니다. var mHash = Utility.getKeyHash(this) 카카오 SDK를 사용하지 않더라도 어렵지 않게 해쉬키를 얻을 수 있는데요. 아래 코드를 이용해서, Logcat에서 해쉬키값을 얻어오는 것 입니다. "HashKey:" 다음에 나오는 키값이 바로 Debug용.. 2021. 5. 7.
registerForActivityResult 구현방법 정리 # 예전 onActivityResult 오늘은 Activity간에 데이터를 주고받을 때 사용해야 하는 registerForActivityResult에 대해서 정리해 보도록 하겠습니다. 기존에는 사용하지 않던 API이어서 조금은 낯설지도 모르겠습니다. 1. 예전구현방법 먼저, java로 작성한 예전구현 방법에 대해서 간단히 알아보고 가겠습니다. 이전 구현방법이 필요하지 않으시면 바로 2번의 새로바뀐 API구현 방법으로 가시면 됩니다. A액티비티와 B액티비티간에 데이터를 주고 받는다고 가정해 보겠습니다. 먼저 A액티비티에서, launch는 아래와 같이 했었습니다. startActivity가 아닌, startActivityForResult함수를 이용해서, intent와 임의의 RequestCode를 정의해서 두번째 인자로 전달해 주었구요. Inte.. 2021. 4. 1.
targetSdkVersion 업데이트 Android10 Q API29 업데이트 강제사항 2020년 8월부터는 구글로부터 아래와 같은 이메일을 보신 분들이 있으실 텐데요. 추가로 해야할 테스트나 코드수정은 부담이지만, 정확히 2020년 11월 2일부터는 API29 이상을 타게팅하지 않으면 업데이트가 되지 않으므로 반드시 해 주어야 합니다. 따라서 미리부터 준비하고 테스트를 해서 유저에게 문제가 되지 않도록 해 주어야 할 텐데요. 오늘은 이것을 할 때 주의해야 할 점들에 대해서 정리해 보도록 하겠습니다. 1. targetSDKVersion수정 targetSdkVersion자체는 쉽게 수정할 수 있습니다. app레벨의 build.gradle을 아래와 같이 수정해 주기만 하면 되는데요. 먼저 targetSdkVersion을 29로 수정해 줍니다. compile시에 사용하는 SDK버전을 설정하는, .. 2020. 10. 9.
Full Screen Intent Notificaiton 에 관한 정리 # 풀스크린 인텐트 오늘은 Full Screen Intent에 대해서 정리해 보도록 하겠습니다. 다만 Notification의 기본에 대해서는 다른 글에서 다루고 있으니, 이 글에서는 fullScreenIntent에 관한 부분만 다루도록 하겠습니다. 1. Full Screen Intent 전화가 오는 경우나 알람시계와 같이 특정시간에 즉시 그리고 분명하게 유저에게 알려야 하는 경우가있는데요. 스테이터스바에 노티를 보여주는대신에 해당 intent를 launch시켜주어야 할 때가 있습니다. 전체화면 노티라고 생각해 볼 수 있겠지요. 알람앱에게 있어서는 필수적인 부분이라고 할 수 있습니다. 알람이 울리는 즉시 사용자가 알아채고 알람을 Off시키는 노력을 해 주어야 하니까요. Notification.Builder클래스의 함수 AP.. 2020. 10. 2.
Android4를 지원하지 않는 라이브러리들 정리 # API21 이상 안드로이드 개발자들에게 많이 쓰이는 라이브러리인 OKHttp나 Retrofit에서는, 안드로이드5미만의 기기를 지원하지 않겠다고 합니다. 실제로 GalaxyS3같은 안드로이드4기기의 사용자들은 많이 줄어들고 있기는 한데요. 어떻게 해야할까요? 포기해야할까요? 우선 현재 기기들의 API별 분포부터 보도록 하겠습니다. 1. API21이하(Android5미만)를 포기해야 할까? Android Studio에서 Create New Project로 프로젝트를 생성하려고 하면, Minimum SDK를 설정해야하는 부분이 있는데요. 바로 아래에 Help me Choose라는 링크가 있는데, 이를 클릭하면 아래와 같이 가장 최신의 버전별 기기분포를 볼 수 있습니다. 일부 라이브러리들이 API 21이상을 지원하겠다고 하고.. 2020. 8. 5.
코틀린 Coroutine으로 네트워크 Retry 구현하는 방법 코틀린의 Coroutine으로 네트워크 호출을 할 경우, Retry는 어떻게 구현해야 할 까요. 오늘은 이 방법에 대해서 정리해 보도록 하겠습니다. 1. \ 2020. 3. 24.
Android WebView 를 설정하고 로딩하는 방법을 정리해보자 때로는 안드로이드에서 web의 컨텐츠를 보여주어야 할 경우가 있습니다. 구글의 공식문서에는 가능하면 그냥 크롬같은 웹브라우저를 쓰라는 말도 적혀있지만, 경우에 따라서 유저들에게 해당 앱의 영역을 넘어가서, 관련 컨텐츠를 경험시키는 것이 부담스러울 때가 있기 때문이지요. 오늘은 webView를 구현하는 방법에 관해서 정리해 보도록 하겠습니다. 1. Manifest 선언 본격적으로 WebView에 대해 알아보기 전에 Manifest에 permission에 관해서 선언할 것 이 있습니다. "android.permission.INTERNET"인데요. WebView를 사용하기 전에, Manifest에 이 부분이 명시적으로 선언이 되어 있어야 합니다. 이제 준비가 되었으니, WebView를 사용해 보도록 하겠습니다.. 2020. 3. 19.
Activity Manifest 설정에 대한 정리(launchMode, screenOrientation, configChanges 등) 안드로이드는 Activity라는 독특한 구조를 가지고 있는데요. 이 Activity를 launch할 때의 환경값이나, stack에 쌓이는 방법등을 정의할 수 있는 TAG가 있습니다. 오늘은 이것들에 대해서 정리해 보도록 할텐데요. 하지만, Manifest에 쓸 수 있는 attribute은 정말 많기 때문에, 그 중 project에 자주 사용할 만한 값들을 중심으로 정리해 보도록 하겠습니다. 1. screenOrientation 화면의 Orientation값을 설정해 줍니다. 보통 개발의 복잡도를 낮추기 위해서, 초기에는 아래와 같이 Portrait모드(세로 모드)를 많이 사용해 줍니다. 하지만, android studio3.6부터는 ignore태그를 아래와 같이 사용하지 않으면, fullSensor 혹은.. 2020. 3. 10.
Firebase Cloud Messaging(FCM)에 대해서 알아보자 오늘은 푸쉬메시지라고 불렸던,Firebase Cloud Messaging, 줄여서 FCM에 대해서 정리해 보겠습니다. 1. FCM의 개념 B라는 사람에게 어떠한 메세지를 전달하는 데 있어서 아래와 같은 두가지 경우를 먼저 생각해 보겠습니다. 첫번째는, A가 B에게 개인적인 메세지를 전달하기 위해서, 앱을 사용하고,서비스를 하는 회사의 서버를 거쳐서 B에게 가는 것 이구요.두번째는, 앱에서 사용자에게 무엇인가 홍보하기 위해서, 서비스 회사의 서버에서 B에게 메세지를 보내는 것 인데요. 1. A->서버->B2. 서버 ->B 그런데, 메세지를 실시간으로 전달받게 하려면,B는 서버에 계속 접속해 있어야 합니다.이것은 실제로 구현한다면, 배터리나 네트워크 사용때문에 문제가 되겠지요. 그래서 이 중간에 구글의 클라.. 2019. 11. 7.
SoundPool 이용해서 다양한 사운드(효과음) 재생하기 #Android 안드로이드 앱을 개발하면서 동시에 여러가지 사운드를 플레이해야하는 경우가 있습니다. 이럴때는 mediaPlayer클래스를 사용하기보다는, SoundPool클래스를 사용해야 하는데요. 오늘은 이 SoundPool 클래스에 대해서 정리해 보도록 하겠습니다. 1. SoundPool 클래스 SoundPool클래스는 여러개의 음원을 미리 로딩해 놓고, 필요한 시간에 각각을 혹은 동시에 재생시킬 수 있는 장점이 있는 Class입니다. 이러한 장점때문에 아무래도 게임앱의 효과음이나 배경음을 재생하는데 많이 사용되는데요. 그럼 객체를 생성하는 방법부터 하나씩 알아보도록 하겠습니다. 1-1. 객체 생성 SoundPool클래스의 객체를 가져오기 위해서는 아래와 같이 해주면 되는데요. Lollopop이후 버전과 아닌 버전과.. 2019. 11. 5.
안드로이드 Build 속도를 개선하는 방법 앱을 개발하면서 다양한 라이브러리를 사용하게 되는데요. 이 라이브러리에는 쓰지않는 수많은 메소드까지 다 따라오게 됩니다. 그러면서 메소드카운트가 Java의 한계를 넘어서게 되구요. Minified를 해주던, MultiDex를 사용하던 해야하는 단계에 이르게 되면, 빌드속도가 엄청나게 느려지게 됩니다. 참고로 Multidex를 바로 사용하기 전에, Debug단계에서는 Minified를 사용해보는 것이 좋은데요. 이에 관한 글은 아래 링크를 참조해 주세요. https://developer88.tistory.com/167?category=219607 코드 몇줄 수정했는데 1분 가까이 빌드가 걸린다면, 개발 의욕도 저하될텐데요. 오늘은 어떻게 하면 Build속도를 빠르게 할 수 있는지 그 방법들을 정리해 보도록.. 2019. 9. 24.
PendingIntent 의 Flag 사용할 때 주의할 점 알람을 사용하던, Receiver를 사용하던, Service를 호출하던 우리는 PendingIntent를 사용하게 됩니다. 이 때 항상 Flag를 설정해 주게 되는데요. 오늘은 이 Flag사용시 주의할 점에 대해서 정리해 보도록 하겠습니다. 1. PendingIntent Flag의 종류 선택할 수 있는 Flag의 종류는 아래의 이미지와 같습니다. 하나하나 보면 다음과 같은데요. FLAG_UPDATE_CURRENT : Pending인텐트가 이미 존재할 경우, Extra Data를 모두 대체 FLAG_CANCEL_CURRENT : Pending인텐트가 이미 존재할 경우, 기존 Pending인텐트를 cancel하고 다시 생성 FLAG_IMMUTABLE : 이름에서 알 수 있듯이, 기존 PendingIntent.. 2019. 8. 28.
BuildConfig 와 ProductFlavor 정리 # BuildTypes BuildConfigField 오늘은 BuildConfig와 ProductFlavor에 대해서 정리해 보고자 하는데요. 이 두가지 클래스들은 각각 빌드별로 다른 값을 가지거나, 기본앱과는 다른 타입의 앱을 출시해서 사용하도록 하는데 사용할 수 있는데요. 먼저 빌드별로 다른 값을 가지도록 할 때 사용하는, buildConfig클래스의 buildConfigField에 대해서 알아보도록 하겠습니다. 1. buildConfig 클래스 1-1. BuildConfigField 구현 빌드가 될 때, 안드로이드의 빌드 시스템인 Gradle은 BuildConfig클래스를 생성합니다. 이는 현재 빌드에 대한 정보를 확인할 수 있도록 하기 위함인데요. BuildConfig클래스의 buildConfigField()메소드를 이용하면, 인자에 원하는 값을 넣.. 2019. 8. 13.
멀티덱스 적용없이 디버그를 위한 Proguard(프로가드) 설정 방법 안드로이드의 여러 라이브러리를 사용하다보면, 단순히 디버깅을 위해 앱을 빌드할 때 조차도, 메소드 카운트가 6.5K를 넘기는 경우가 발생하게 되는데요. 이때 안드로이드 스튜디오가 알려주는데로 무심코 MultiDex를 사용하는 것 보다는, 디버깅할 때에도 사용하지 않는 메소드를 줄여주는 minify과정을 통해서 Multidex를 사용하지 않도록 해야하는 것을 먼저 시도해 보아야 합니다. 그렇게 해도 해결이 않될정도로 앱이 거대하고 큰 규모라면 Multidex를 사용해야 할 테구요. 문제는 minify(리소스를 축소)를 하는 과정에서 난독화도 같이 하게 되면서 테스트를 위한 빌드를 하는데도 엄청난 시간이 걸릴 수 있는 것 인데요. 이는 개발동기 저하와 생산성하락으로 이어질 테구요. 오늘은 이를 어떻게 해결해.. 2019. 7. 26.
AndroidX 로 SupportLibrary 마이그레이션(Migration) 하기 기존의 SupportLibrary를 사용하시는 분들에게는AndroidX로 마이그레이션 해야한다는 사실은 정말 피곤한 일이 아닐 수 없습니다.하지만, 구글의 SupportLibrary Revision을 보면 이젠 더이상 업그레이드를 하지 않는다고 명시되어 있기도 하고,계속 SupportLibrary를 고수할 수 없는일이지요. 오늘은 마이그레이션 하는 과정에 대해서 정리해보겠습니다. 1. AndroidX로 변경하기 참고로 AndroidX의 변경사항에 대해서는 아래 링크를 참고해 볼 수 있습니다.>> https://developer.android.com/jetpack/androidx/releases/archive/androidx 2019. 7. 15.
PhoneStateListener 로 안드로이드폰 전화 상태 알아내기 #통화중 음악재생 알람기능이 들어간 앱을 만들경우에, 전화를 하고 있다면,알람소리를 잠시 멈추었다가 통화가 끝나면 다시 재생해주는 등의 처리를 해주어야 합니다.이러한 처리를 하기 위해서는 사용자가 전화를 받고 있다는 것을 알아야 하는데요.이를 위해서 TelephonyManager와 PhoneStateListener가 필요한 데요.오늘은 이들을 이용해서 대응하는 방법에 대해서 정리해 보도록 하겠습니다. 1. TelephonyManager 안드로이드 폰의 전화서비스에 대한 정보에 접근하기 위해서는 TelephonyManager객체가 필요한데요.이를 위해서 getSystemService메소드를 통해서 객체의 레퍼런스를 얻어옵니다. 그리고 전화와 관련된 정보를 얻을 때는 Manifest에서 permission을 얻는다고 명시해주.. 2019. 7. 13.
Notification Channel(알림 채널) 생성해서 적용하는 방법 안드로이드 Oreo버전부터는 노티채널을 만들어 주어야 하는데요. 안드로이드 버전이 올라가면서 분기를 타야하는 코드는 만들지 않았으면 했지만, 오히려 하나씩 생겨나게 되네요. 채널을 만들어서 알람을 좀 더 활용하라고 구글님이 만든 것이라고, 긍정적으로 보기로 하구요. 채널을 만드는 것부터 하나하나 보도록 하겠습니다. 1. Notification Channel 노티피케이션 채널은 노티를 할 때마다 만들어야 하는 것은 아니구요. 앱에서 한번만 생성하면 되므로, android.app.Application을 상속받은 Applicaiton.class에서 하도록 하였습니다. 긴 설명보다는 아래 코드를 통해 쉽게 적용하실 수 있을 텐데요. 보시다시피 생각보다는 간단합니다. NotificationChannel을 생성할 .. 2019. 6. 12.
RemoteConfig 이용해서 다이나믹하게 앱 업데이트 하기 안드로이드 앱을 만들면서 상황에 맞게 화면을 변경시키는 것이 필요할 경우가 있습니다.가장 쉽게 생각해 보면, 앱에 급박하게 공지를 보여주거나,앱의 업데이트된 버전을 확인할 수 있도록 하는 것인데요.RemoteConfig을 이용하면 이러한 일들을 쉽게 할 수 있습니다. 오늘은 RemoteConfig을 이용하는 방법에 대해서 정리해 보겠습니다. 1. RemoteConfig 앱을 다운로드 할 필요없이 앱의 형태와 동작을 변경할 수 있도록,구글에서 제공해주는 클라우드 서비스의 형태로 Firebase서비스의 일부인 RemoteConfig입니다. 공식문서에 소개된 이 API의 Architecture는 아래와 같이 구성되어 있습니다.아직은 무슨 말인지 모를 수 있으니, 휙 둘러보고, 아래글을 다 읽은 다음 다시 올라.. 2019. 3. 26.
안드로이드 스튜디오3에서 Gradle Sync 이슈 해결하기 안드로이드 스튜디오3로 업그레이드를 해주고,빌드를 돌려보면, 아래와 같이 Gradle Sync Issues를 볼 수 있습니다.이러한 이슈들은 build.gradle의 Module:app레벨에서 일어나는 이슈들인데요. 자세히 보면 아래와 같이 나와있습니다..지금 쓰고 있는 configuratoin의 설정은 이제 더이상 쓰지 않고,2018년도 이후에는 사용할 수 없다고 되어 있네요. 다행이 관련 해서 정보를 얻을 수 있는 링크를 제공해 주고 있네요.https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration?utm_source=android-studio#new_configurations 5가지나 바뀌었으니 조금 피곤하게 되었네요.하지만 유.. 2018. 8. 20.
Android XML에서 Custom Font 사용하기(SupportLibrary26 이상) SupportLibrary26이 발표되면서, 드디어 XML에서 Font를 사용할 수 있게 되었습니다.(벌써 27버전이 발표되었고, AndroidStudio는 3.0릴리즈 버전으로 업데이트 되었습니다.)더이상 TypeKit은 사용할 필요가 없게 되었네요.오늘은 xml에서 CustomFont를 사용하는 방법에 대해서 정리해 보겠습니다. 1. SupportLibrary 추가하기 SupportLibrary 25.4.0부터는 Maven Repository를 이용하는데요.기존의 jcenter()밑에 maven { url "https://maven.google.com" } 만 추가해주면 됩니다. 26이상의 최신 Support Library를 추가해 주어야 하구요.build.gradle의 dependency에 supp.. 2017. 10. 31.
ViewPager 페이지 전환시, 추상클래스 또는 Interface로 Refresh구현하기 ViewPager를 사용하다보면, 페이지를 전환할 때, 부모 Activity에서 Fragment의 메소드를 콜 해야하는 경우가 있습니다.드물기는 하지만, Activity에서 refresh버튼을 클릭해서 fragment를 refresh 하는 경우도 그 중 하나인데요. 이를 구현하기 위해서는, Interface를 이용해서 콜백메소드를 실행하는 방법도 있을 거구요.BaseFragment를 추상클래스로 생성하고 추상메소드를 만든다음, 상속해서 사용하는 방법도 있을 것입니다. 오늘은 추상클래스와 interface사용하는 두가지 방법에 대해서 간단히 비교 및 정리해 보구요.실제로 두가지 방법으로 구현해 보도록 하겠습니다. 1. 추상클래스 vs Interface 먼저, 간단하게 추상클래스와 interface에 대해서.. 2017. 8. 4.
Android 에서 SharedPreference 로 설정데이터 저장하기 안드로이드 개발을 하면서 간단한 값들을 앱안에 저장할 때가 있는데요.예를 들면, 앱의 글자 크기설정, 알람 온오프 같은 값입니다.그런데, 이럴때마다 DB를 사용하는 것은 너무나 무거운 일인데요.SharedPreference를 사용하면 좀더 가볍고, 쉽게 해결할 수 있습니다. 1. SharedPreference 는? SharedPreference는 비교작 작은 크기의 키-밸류값을 읽고 쓸수 있도록 Android Framework에서 제공해주는 기능입니다.위에서 애기한것처럼, 주로 설정값을 저장 하는데 많이 사용 하구요.경우에 따라서 private하게 사용하거나, share될수 있도록 할 수 있습니다.그럼 한번 실제로 만들어보면서 알아보겠습니다. 2. Sington 패턴사용한 초기화 실제 앱에서 작업할때는 .. 2017. 7. 1.
WeakReference <약한 참조> 에 대해서 정리해보자 앱 개발이 마무리 단계에 들어서서, 테스트하면서 부딪히는 문제가 바로 MemoryLeak입니다.MemoryLeak(메모리 누수)가 나는데는 여러가지 문제가 있습니다만.해결책으로 종종 제시되는 것이 WeakReference(약한 참조)인데요.이것은 StrongReference(강한참조)와 어떻게 다르고, 어떻게 구현하는 것일까요?오늘은 그 방법에 정리해 보겠습니다. 1. WeakReference vs StrongReference WeakReference와 StrongReference에 대해서 간단히 정리해 보도록 하겠습니다.(SoftReference나 Phantom도 있지만 이 부분은 다음에 글로 정리해 보도록 하겠습니다.) 우리말로 하면 약한 참조 vs 강한 참조가 되는데요.무언가가 약하고 강하다는 것인.. 2017. 6. 30.
Wifi / 3G 네트워크 연결 상태를 확인하는 ConnectivityManager 안드로이드 앱을 만들면서, Wifi나 3G를 사용해서 인터넷에 연결되어야 할 경우,사용자의 스마트폰이 연결되어 있는지 체크해야 할 필요가 있습니다. 오늘은 이 경우에 어떻게 해야 하는지 정리해 보도록 하겠습니다. 1. Permission 설정 안드로이드에서 코딩을 하면서, 항상 체크해봐야 할 것이 이 API가 Permission이 필요한 것인가 인데요.네트워크 상태를 알아볼 때에도 역시나 permission이 필요합니다.다행인 것은 동적 permission을 요구하지는 않으므로,Manifest에서 android.permission.ACCESS_NETWORK_STATE 에 대해서 uses-permission태그를 추가해주면 됩니다.(네트워크 사용에 대한 것이므로 internet 사용permission을 요.. 2017. 5. 23.
Vibrator 로 설정하는 안드로이드 진동 앱을 만들때 사용자에게 알리는 방법중 Vibrator는 매우 중요한 수단중 하나인데요.오늘은 Vibrator를 사용하는 방법에 대해서 정리해보겠습니다. 1. Manifest 설정 제일 먼저 해주어야 하는것은 permission을 얻는 것인데요.다행히도 동적으로 얻어야 하는 수준의 permission은 아닙니다~.manifest에 uses-permission만 VIBRATE에 대해서 정의해주면 되네요. 2. Vibrator 객체 얻기 이제, Vibrator객체를 얻어서, 멤버 메소드들로 실행시켜야 되는데요.안드로이드 하드웨어와 관련된 클래스들이 그렇듯이,getSystemService 메소드를 사용해서 객체를 얻어와야 합니다. 2017. 5. 17.
안드로이드의 Multi Thread, Runnable, Looper 그리고 Handler 오늘은 멀티Thread와 관련된 Runnable과 Looper 그리고 Handler에 대해서 정리해 보겠습니다. 1. 멀티 Thread Java의 JVM에서는, 하나의 Process에서, Thread 라고 하는 코드를 실행시키는 객체를 여러개 가질 수 있도록 허용하고 있습니다.이를 활용하여, 복잡한 계산이라든가, 네트워크 등의 실행을 다른 쓰레드에서 효율적으로 실행할 수 있도록 하고 있는데요.멀티 Thread를 실행하는데 관련된 요소들을 정리해 보도록 하겠습니다. 1-1. Process 와 Thread 먼저 쓰레드가 속해있는 Process에 대해서 정리해 보겠습니다. Process는 실행중인 프로그램의 객체를 의미하는데요.이를 Android를 기준으로 생각해보겟습니다. Android에서 앱을 실행할때, .. 2017. 4. 9.
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.