http://www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html#concurrency_handler
2018년 3월 28일 수요일
2018년 3월 5일 월요일
[Android] setBackgroundResource VS setImageResource
무슨 차이가 있을까요? 결론부터 말씀드리면,
setBackgroundResource는 이미지뷰의 백그라운드의 크기에 맞게 설정되고,
setImageResource는 이미지뷰의 src 이미지를 설정합니다.
그게 뭔 말인지... 헷갈리신다고요?
그 차이는 이미지 자체의 크기가 작을 때 극명하게 나뉘는데요, 이미지 자체가 이미지뷰보다 상대적으로 작다고 할 때, setBackgroundResource는 이미지 자체를 크게 늘려서 이미지뷰의 크기만큼 보여주고, setImageResource는 이미지뷰의 크기만큼만 보여준다는 차이점이 있습니다.
출처 : https://stackoverflow.com/questions/7221673/what-is-the-difference-between-imageview-setbackgroundresource-and-imageview-set
setBackgroundResource는 이미지뷰의 백그라운드의 크기에 맞게 설정되고,
setImageResource는 이미지뷰의 src 이미지를 설정합니다.
그게 뭔 말인지... 헷갈리신다고요?
그 차이는 이미지 자체의 크기가 작을 때 극명하게 나뉘는데요, 이미지 자체가 이미지뷰보다 상대적으로 작다고 할 때, setBackgroundResource는 이미지 자체를 크게 늘려서 이미지뷰의 크기만큼 보여주고, setImageResource는 이미지뷰의 크기만큼만 보여준다는 차이점이 있습니다.
출처 : https://stackoverflow.com/questions/7221673/what-is-the-difference-between-imageview-setbackgroundresource-and-imageview-set
2018년 3월 2일 금요일
[Android] 멀티 덱스? What is MultiDex?
1. 멀티텍스는 무엇인가요?
한마디로 여러 개의 덱스 파일을 사용할 수 있다는 것입니다. 아래의 설명에서 보듯이, 안드로이드 파일은 파일 한 개당 65,536 메소드/프레임워크/라이브러리 등을 가질 수 있습니다. API 21 미만에서는 65,536이 넘어가게 되면 멀티덱스 지원라이브러를 사용해야 하고, API 21 이상에서는 설정만 가볍게 바꾸면 됩니다. 물론 API 21 이하에서도 쉽습니다만 지원라이브러를 꼭 추가해줘야 합니다.
# stackoverflow
2. 그렇다면 멀티덱스는 어떻게 사용하나요?
API 21이상이라면,
API21이하라면,
출처 :
https://stackoverflow.com/questions/33588459/what-is-android-multidex
https://developer.android.com/studio/build/multidex.html?hl=ko#about
https://developer.android.com/reference/android/support/multidex/MultiDex.html
https://developer.android.com/topic/libraries/support-library/features.html?hl=ko#v7
https://developer.android.com/studio/build/multidex.html?hl=ko
https://ko.wikipedia.org/wiki/%EB%8B%AC%EB%B9%85_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)
https://source.android.com/devices/tech/dalvik/dex-format
한마디로 여러 개의 덱스 파일을 사용할 수 있다는 것입니다. 아래의 설명에서 보듯이, 안드로이드 파일은 파일 한 개당 65,536 메소드/프레임워크/라이브러리 등을 가질 수 있습니다. API 21 미만에서는 65,536이 넘어가게 되면 멀티덱스 지원라이브러를 사용해야 하고, API 21 이상에서는 설정만 가볍게 바꾸면 됩니다. 물론 API 21 이하에서도 쉽습니다만 지원라이브러를 꼭 추가해줘야 합니다.
# stackoverflow
It's as simple as this
A single .dex file can have 65,536 methods(references) so if the number of references exceed 65,536, you go with multidex.
More Explanation !
An android application program is compiled into a .dex file which in turn zipped to a single .apk file.
DVM (Dalvik Virtual Machine) uses .dex file/files to execute bytecodes.
DVM (Dalvik Virtual Machine) uses .dex file/files to execute bytecodes.
What causes number of references to exceed 65,536 limit ?
Methods written by you + Android Framework methods + Third party library(eg Volley,Retrofit,Facebook SDK etc) methods.
I have read "somewhere"
App Compat 24.2.1 contains 16.5k methods
Google Play Services GCM 9.6.1 contains 16.7k methods
So if you have created a simple Hello world application which has App Compat 24.2.1, you are already 1/4 way to cross the single dex methods limit
#AndroidDeveloperMethods written by you + Android Framework methods + Third party library(eg Volley,Retrofit,Facebook SDK etc) methods.
I have read "somewhere"
App Compat 24.2.1 contains 16.5k methods
Google Play Services GCM 9.6.1 contains 16.7k methods
So if you have created a simple Hello world application which has App Compat 24.2.1, you are already 1/4 way to cross the single dex methods limit
Android 플랫폼이 계속 성장함에 따라 Android 앱의 크기도 따라서 증가합니다. 앱과 이 애플리케이션이 참조하는 라이브러리의 크기가 일정 크기에 도달하면, 앱이 Android 앱 빌드 아키텍처의 제한에 도달했음을 나타내는 빌드 오류가 발생합니다. 이전 버전의 빌드 시스템에서는 이 오류를 다음과 같이 보고합니다.
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
그보다 최근의 Android 빌드 시스템 버전에서는 다른 오류를 표시하지만 이 오류는 동일한 문제를 나타내는 것입니다.
trouble writing output: Too many field references: 131000; max is 65536. You may try using --multi-dex option.
두 오류 모두 공통 숫자인 65,536을 표시합니다. 이 숫자는 단일 DEX(Dalvik Executable) 바이트코드 파일 내에서 코드가 호출할 수 있는 참조의 총 개수를 나타냅니다. 이 페이지에서는 multidex라는 앱 구성을 활성화하여 이 제한을 넘는 방법을 설명합니다. multidex는 앱이 다중 DEX 파일을 빌드하고 읽을 수 있게 해줍니다.
API 21이상이라면,
android { defaultConfig { ... minSdkVersion 21 targetSdkVersion 26 multiDexEnabled true } ... }
API21이하라면,
android { defaultConfig { ... minSdkVersion 15 targetSdkVersion 26 multiDexEnabled true } ... } dependencies { compile 'com.android.support:multidex:1.0.1' }
출처 :
https://stackoverflow.com/questions/33588459/what-is-android-multidex
https://developer.android.com/studio/build/multidex.html?hl=ko#about
https://developer.android.com/reference/android/support/multidex/MultiDex.html
https://developer.android.com/topic/libraries/support-library/features.html?hl=ko#v7
https://developer.android.com/studio/build/multidex.html?hl=ko
https://ko.wikipedia.org/wiki/%EB%8B%AC%EB%B9%85_(%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4)
https://source.android.com/devices/tech/dalvik/dex-format
2018년 3월 1일 목요일
[Android] Cursor란 무엇인가
Cursor란 무엇인가?
Cursor는 안드로이드에서 제공하는 인터페이스로서, SQLite에서 필요한 데이터를 편하게 쓸 수 있도록 배려하였다. 하나의 행 단위로 만들었기 때문에 JSON처럼 데이터가 묶여있다고 생각하면 된다. 예를 들면,
Cursor cursor = myDb.getAllData(); //myDb는 SQLite 생성/추가/수정/삭제를 클래스의 객체다.
cursor.moveToFirst(); //이 코드는 첫번째 행으로 이동한다. 없으면 에러가 생긴다.
cursor.getString(0); //getString에서 String은 변수형이고 0은 컬럼값이다. 첫번째 행은 0부터 시작한다.
Source :
http://arabiannight.tistory.com/entry/368
https://developer.android.com/reference/android/database/Cursor.html
Cursor는 안드로이드에서 제공하는 인터페이스로서, SQLite에서 필요한 데이터를 편하게 쓸 수 있도록 배려하였다. 하나의 행 단위로 만들었기 때문에 JSON처럼 데이터가 묶여있다고 생각하면 된다. 예를 들면,
Cursor cursor = myDb.getAllData(); //myDb는 SQLite 생성/추가/수정/삭제를 클래스의 객체다.
cursor.moveToFirst(); //이 코드는 첫번째 행으로 이동한다. 없으면 에러가 생긴다.
cursor.getString(0); //getString에서 String은 변수형이고 0은 컬럼값이다. 첫번째 행은 0부터 시작한다.
Source :
http://arabiannight.tistory.com/entry/368
https://developer.android.com/reference/android/database/Cursor.html
2018년 2월 27일 화요일
[Android] SwipeRefreshLayout
아래서 당겨서 하는 업데이트? 리프레시?는 SwipeRefreshLayout 를 활용하여 만든다.
출처 : https://medium.com/@bluesh55/android-%EB%8B%B9%EA%B2%A8%EC%84%9C-%EC%83%88%EB%A1%9C%EA%B3%A0%EC%B9%A8-%EA%B0%84%EB%8B%A8%ED%95%98%EA%B2%8C-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-a42846c14c23
2018년 2월 25일 일요일
[자료구조] malloc한 후에 free하지 않는다면?
질문 그대로 입니다.
하기 귀찮은데... free.. 배열을 꼭 해제시켜줘야 할까요?
출처 :
https://kldp.org/node/31099
하기 귀찮은데... free.. 배열을 꼭 해제시켜줘야 할까요?
출처 :
https://kldp.org/node/31099
[자료구조] 순차 검색 알고리즘
순차 검색 알고리즘(sequential search algorithm), 또는 선형 검색 알고리즘(linear search algorithm)은 리스트에서 특정한 값을 찾는 알고리즘의 하나다. 이것은 리스트에서 찾고자 하는 값을 맨 앞에서부터 끝까지 차례대로 찾아 나가는 것이다. 검색할 리스트의 길이가 길면 비효율적이지만, 검색 방법 중 가장 단순하여 구현이 쉽고 정렬되지 않은 리스트에서도 사용할 수 있다는 장점이 있다.
int sequentialSearch(int array[], int n, int m, int value) //숫자는 n부터 m까지를 말한다.
{
int i = 0;
for(i = n; i <= m; i++)
{
if(array[i] == value)
return i;
}
return -1;
}
출처 : Wikipedia /https://ko.wikipedia.org/wiki/%EC%88%9C%EC%B0%A8_%EA%B2%80%EC%83%89_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
정리하자면, 선형검색(Linear search)의 장점은 구현이 쉽고 정렬되지 않은 리스트에서도 사용가능하다는 점이다. 반면 검색할 리스트가 길어지면 비효율적이다. 왜냐하면 맨 처음부터 끝까지.. 찾는 대상이 뒤에 있으면 있을 수록 시간이 더 걸리기 때문이다.
int sequentialSearch(int array[], int n, int m, int value) //숫자는 n부터 m까지를 말한다.
{
int i = 0;
for(i = n; i <= m; i++)
{
if(array[i] == value)
return i;
}
return -1;
}
출처 : Wikipedia /https://ko.wikipedia.org/wiki/%EC%88%9C%EC%B0%A8_%EA%B2%80%EC%83%89_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
정리하자면, 선형검색(Linear search)의 장점은 구현이 쉽고 정렬되지 않은 리스트에서도 사용가능하다는 점이다. 반면 검색할 리스트가 길어지면 비효율적이다. 왜냐하면 맨 처음부터 끝까지.. 찾는 대상이 뒤에 있으면 있을 수록 시간이 더 걸리기 때문이다.
2018년 2월 23일 금요일
[Android] The application may be doing too much work on its main thread
로그캣을 보다가 다음을 발견하였다.
I/Choreographer: Skipped 33 frames! The application may be doing too much work on its main thread.
검색해보니 다음의 해결방안을 찾았다.
1. Thread를 생성하여 필요한 작업을 한다. 그렇게 되면 Main Thread의 Too much workd을 줄여줄 수 있게 된다.
2. Manifest 속성에서 Hardware Acceleration="true"로 설정하는 것이다.
출처 :
1. stackoverflow/ https://goo.gl/ckM9jP
2. android developer/ https://goo.gl/AjuFwZ
I/Choreographer: Skipped 33 frames! The application may be doing too much work on its main thread.
검색해보니 다음의 해결방안을 찾았다.
1. Thread를 생성하여 필요한 작업을 한다. 그렇게 되면 Main Thread의 Too much workd을 줄여줄 수 있게 된다.
2. Manifest 속성에서 Hardware Acceleration="true"로 설정하는 것이다.
출처 :
1. stackoverflow/ https://goo.gl/ckM9jP
2. android developer/ https://goo.gl/AjuFwZ
[Android] Gradle이란?
안드로이드 스튜디오를 사용하면서 Gradle이 무엇인지 궁금했다. 한 마디로 빌드를 자동화해주는 것이다. 그렇다면 빌드는 무엇인가?
1) 코드를 작성하고
2) 그 코드를 컴파일해서 오브젝트 파일을 만들고
3) 링킹이라는 작업을 통해 실행 파일 또는 Java의 .jar와 같은 라이브러리 파일을 만든다.
빌드는 위의 세 가지 과정이다. Gradle은 바로 이 빌드를 자동화해주는 것이다. 또한 Gadle은 여러 언어의 빌드 환경을 자동화해주는 오픈소스이다.
출처 :
https://medium.com/@goinhacker/%EC%9A%B4%EC%98%81-%EC%9E%90%EB%8F%99%ED%99%94-1-%EB%B9%8C%EB%93%9C-%EC%9E%90%EB%8F%99%ED%99%94-by-gradle-7630c0993d09
https://gradle.org/
https://en.wikipedia.org/wiki/Gradle
1) 코드를 작성하고
2) 그 코드를 컴파일해서 오브젝트 파일을 만들고
3) 링킹이라는 작업을 통해 실행 파일 또는 Java의 .jar와 같은 라이브러리 파일을 만든다.
빌드는 위의 세 가지 과정이다. Gradle은 바로 이 빌드를 자동화해주는 것이다. 또한 Gadle은 여러 언어의 빌드 환경을 자동화해주는 오픈소스이다.
출처 :
https://medium.com/@goinhacker/%EC%9A%B4%EC%98%81-%EC%9E%90%EB%8F%99%ED%99%94-1-%EB%B9%8C%EB%93%9C-%EC%9E%90%EB%8F%99%ED%99%94-by-gradle-7630c0993d09
https://gradle.org/
https://en.wikipedia.org/wiki/Gradle
[C] 출력 함수 printf 사용법
printf를 사용하는 것 자체는 어렵지 않은데, %d, %s, %f 등이 헷갈린다. 찾아보니 서식문자라고 하더라. 서식문자 종류를 잘 정리해놓은 블로그를 소개한다.
출처 : http://jink1982.tistory.com/95
출처 : http://jink1982.tistory.com/95
2018년 2월 22일 목요일
[C] typedef이 뭔가요?
구조체의 배열을 공부하다보면 typedef이 나온다. 찾아보니 typedef는 type definition의 줄임말로 변수형을 결정해주는 역할을 한다(응?). 아직 설명할 수 없는 걸 보니 제대로 알지 못한다는 확신이 든다. 검색해보니,
1. typedef는 자료형의 별칭을 만든다. 따라서 구조체뿐만아니라 모든 변수들(포인터 변수도 당근!)도 가능하다. 이렇게 typedef으로 정의된 것을 사용자 정의 타입, 혹은 사용자 정의 변수라고 한다.
Source :
1) 위키피디아/ https://goo.gl/4aFwFM
2) tutorialsPoint/ https://goo.gl/vZXMS4
3) c언어코딩도장/ https://goo.gl/EGjgga
1. typedef는 자료형의 별칭을 만든다. 따라서 구조체뿐만아니라 모든 변수들(포인터 변수도 당근!)도 가능하다. 이렇게 typedef으로 정의된 것을 사용자 정의 타입, 혹은 사용자 정의 변수라고 한다.
Source :
1) 위키피디아/ https://goo.gl/4aFwFM
2) tutorialsPoint/ https://goo.gl/vZXMS4
3) c언어코딩도장/ https://goo.gl/EGjgga
피드 구독하기:
글 (Atom)