Java Stack
Chrome Custom Tabs
Chrome Custom Tabs
2018.12.30launching the browser is a heavy context switch that isn't customizable, while WebViews don't share state with the browser and add maintenance overhead.이런 단점들을 해결하기 위해 나온게 Chrome Custom Tab이다. 웹뷰와 CCT 중 뭘 써야할지 감이 잘 안올 때는,https://stackoverflow.com/questions/42689996/webview-vs-chrome-custom-tab 간단하게 쓸 때.launchUrl만 호출해도 된다.```ktval builder = CustomTabsIntent.Builder()val customTabsIntent = builder..
[Android] HTTP 요청 (Retrofit / OkHttp)
[Android] HTTP 요청 (Retrofit / OkHttp)
2018.12.26이 글은 보호되어 있기 때문에 이것을 보려면 암호가 필요합니다.
Android Widget 제작 참고 자료 및 주의 사항
Android Widget 제작 참고 자료 및 주의 사항
2018.12.23기본적인 위젯 제작과 ListViewhttp://blog.naver.com/PostView.nhn?blogId=horajjan&logNo=220578698191전체적인 설명RemoteViewsListView, StackView : RemoteViewsService/RemoteViewsFactory https://docs.huihoo.com/android/3.0/resources/samples/StackWidget/src/com/example/android/stackwidget/StackWidgetService.html액티비티의 연산 결과를 위젯에서 가져오기 위해 SharedPreferences https://developer.android.com/guide/topics/appwidgets/#persist..
액티비티 : Activity life cycle, 백스택, singleTop
액티비티 : Activity life cycle, 백스택, singleTop
2018.05.20https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ko https://developer.android.com/guide/components/tasks-and-back-stack?hl=ko
AlertDialog, Snackbar, Toast / String resource
AlertDialog, Snackbar, Toast / String resource
2018.05.20AlertDialog```ktfun finishDialog(activity : AppCompatActivity, title : String?, message : String?) { AlertDialog.Builder(activity).setTitle(title) .setMessage(message) .setCancelable(false) .setPositiveButton("종료", { _, _ -> activity.finish() }).show()}```내부에서 ``kt ContextThemeWrapper``를 사용하기 때문에 ``kt baseContext``를 넘기면 강제 종료된다. Snackbar```ktlistView.setOnItemClickListener { parent, v, position,..
Android Context 정리
Android Context 정리
2018.01.04Context란? + 안드로이드의 프로세스 / 어플리케이션 차이 https://stackoverflow.com/questions/10347184/difference-and-when-to-use-getapplication-getapplicationcontext-getbaseconcontext와 싱글턴 정리하면Application Context(``kt applicationContext``)는 어플리케이션 전역적으로 하나만 존재하는 싱글턴 객체이며Activity Context(``kt this``)는 Activity life-cycle을 따르는 Context다. View를 조작하거나 어떤 Activity와 밀접한 관련이 있는 경우 ``kt this``를, 나머지 경우(특히 싱글턴이나 DB)에는 ``kt ap..
adb로 디버깅
adb로 디버깅
2017.12.29https://developer.android.com/studio/command-line/adb.html?hl=ko#howadbworks ```bashadb devices``` adb로 DB 접근하기```bashD:\AndroidSDK\platform-tools>adb shellroot@generic_x86:/ # cd data/data/com.example.umbum.openweatherexp/databasesroot@generic_x86:/data/data/com.example.umbum.openweatherexp/databases #sqlite3 user.dbSQLite version 3.8.6.1 2015-05-21 17:24:32Enter ".help" for usage hints.sqlite>..
onClick in XML vs. onClickListener
onClick in XML vs. onClickListener
2017.12.29퍼포먼스는 둘 다 같다.코드가 길지 않다면 onClick을 사용하는 방식이,코드가 길어진다면 onClickListener를 사용하는 방식이 괜찮아 보인다. onClick in XML의 장점 ( API 4 부터 사용 가능 )``kt onClickListener()``를 지정하는 방식은 ``kt inflate`` 또는 ``kt findViewById()``로 View를 불러와야 하기 때문에 후자의 경우 리스너를 지정할 View 마다 id를 지정해주어야 하지만 ``kt onClick=``은 id를 지정할 필요가 없다.C#에서 리소스의 Event를 지정할 때 사용하는 방식도 이런 식이다.```xml``````ktfun onClickDelete(v: View) {}``` onClickListener의 장점``kt..
Android Permission 정리
Android Permission 정리
2017.12.24Android 6.0 Marshmallow(API 23) 이전에는 `` AndroidManifest.xml``에 필요한 위험 권한을 선언해놓고, 앱을 설치할 때 한 번에 권한을 획득하는 방식이었다.그러나 6.0부터는 런타임에 위험 권한을 요청해야 한다.기기에서 Android 5.1 이하를 실행 중이거나, 또는 앱의 `` targetSdkVersion``이 22 이하인 경우: 여러분이 매니페스트에 위험 권한을 나열하는 경우, 사용자는 앱을 설치할 때 권한을 부여해야 하며, 권한을 부여하지 않을 경우 시스템이 앱을 설치하지 않습니다.기기에서 Android 6.0 이상이 실행 중이고, 그리고 앱의 `` targetSdkVersion``이 23 이상인 경우: 앱이 매니페스트에 권한을 나열해야 하며, 그리고 앱이..
View와 layout Inflate. + ViewHolder // kotlinx
View와 layout Inflate. + ViewHolder // kotlinx
2017.12.22Anko등을 사용하지 않는 일반적인 경우라면 layout은 xml을 이용해서 만들기 때문에,xml layout을 불러와 실제로 앱에 그려주는 작업(View로 만드는 작업)이 필요한데 이를 inflate라고 한다.```ktval elementView = inflater.inflate(R.layout.layout_list_element, parent, false)``` ViewHolder를 사용하고 싶다면, inflate한 View가 가지고 있는 각각의 View 컴포넌트를 멤버로하는 ViewHolder를 만들고 `` ViewHolder``객체를 만든다. ``kt findViewById()``를 처음 한 번만 호출하고 결과를 ViewHolder에 저장해 놓는 방식으로, 매번 resolve할 필요가 없어 효율적..
안드로이드 플랫폼의 구조 / ART
안드로이드 플랫폼의 구조 / ART
2017.12.08https://developer.android.com/guide/platform/index.html?hl=ko#art Android는 모바일 기기를 위한 Linux 기반 커널과 미들웨어, 핵심 애플리케이션들을 포함한 소프트웨어 스택이라고 볼 수 있다. ART, Android Runtimehttps://developer.android.com/guide/practices/verifying-apps-art.html?hl=ko https://source.android.com/devices/tech/dalvik/?hl=ko```.class --- DX ---> .dex : Dalvik.dex -- dex2oat --> .oat : ART```안드로이드 5.0 롤리팝(API 21)부터는 Dalvik VM 대신 AR..
애플리케이션 기본 항목. 앱의 기본 동작 원리
애플리케이션 기본 항목. 앱의 기본 동작 원리
2017.12.08https://developer.android.com/guide/components/fundamentals.html 안드로이드의 메모리 관리 관점에서 프로세스 / 어플리케이션 관리 Android 앱은 일단 기기에 설치되고 나면 각자 자체적인 보안 샌드박스 안에 존재합니다.Android 운영 체제는 멀티유저 Linux 시스템으로, 여기서 각 앱은 각기 다른 사용자와 같습니다.앱을 설치하면서 앱에 UID, GID(e.g., app_15)를 할당하고 이 권한으로 실행되기 때문에 각각의 앱이 서로 액세스할 수 없다.(이 ID는 시스템만 사용할 수 있으며 앱에서는 인식하지 못함) 시스템은 앱 안의 모든 파일에 대해 권한을 설정하여 해당 앱에 할당된 UID/GID만 이에 액세스할 수 있도록 합니다.각 프로세스가 자..