옛날 자료 보관용(2012년)
Java - 6.0 설치
eclipse - 4.2, 3.7
android SDK api - level 16 임
안드로이드는 내부가
안드로이드는 대부분이 통신임(브로드캐스트 방식) - 1:n, intent
dalvik VM : 프로세스 당 1개씩....
Context.openOrCreateDatabase()
커넥션 관련
SQLiteOpenHelper -
abstract
- onCreate
- onUpgrade
...
생성자에 database_name, version
CRUD 관련
SQLiteDatabase
- getWriteDatabase
- getReadableDatabase
ContentValues 맵형태임 cv
insert(TA테이블, CV콘텐츠벨류)
update
delete
query
execSQL
rawQuery
프로세스가 killed 될 수 있다...
어플리케이션 라이프사이클 vs 프로세스 라이프사이클
그냥 intent 같은걸 요청
베터리는 주로 하드웨어 자원 이용시임
프로세스를 죽이더라도 큰 의미가 없다. 강제 종료시 비정상 종료로 판단. => 액티비티의 경우 탑액티비티가 되면 다시뜨고, 이부이 ㄱ우
Lifecycle 테스트 [실습]
Oncreate OnRestart onPause, OnDestory - 이런거
프로세스 등급은 자기가 포함된 최상위의 등급임
포그라운드 프로세스 /FA
비지블 프로세스
서비스 프로세스
백그라운드 프로세스 /B
엠프티 프로세스
platform-tools
adb
activity manager running processes <dumpsys activity processes>
fixed - 포팅할때 줄수 있어 일반 개발자가 줄수는 없다 /F
getSystemService(..) // manager를 들을 가져오려면 이 서비스를 써야함
Lay
intent object에 있는 정보
-------------
암묵적 intent
action - 잘생겼다고 생각함
category - 160임
data - 신발
action은 꼭 들어감
category가 없으면 디폴드
data는 들어가도 되고 안들어가도 됨
------
intent filter에 대한 것은 자기자신이 결정함
인텐트 리졸루션에 의한 컴포넌트 활성화
apk 내부의 manifest 보고 intent 필터등을 테이블화
액티비티 같은 경우 사용자가 선택할 수 있도록
---
인텐트 플레그에서 FLAG_ACTIVITY_NEW_TASK 를 넣어줘여함.. 안그러면 브로드케스트 리시버에서 Activity를 실행하거나 브로드케스트 리시버에서 서비스에서 Activity가 실행 안됨...
모바일 생태계
Async
그냥 thread와 handler 이용하는 방법
AsyncTask 이용 excute - 상태값도 직접 모두 구현..
장점 - 종료 실행 반복시 thread가 무한히 늘어나지는 않음.
장점 - 일정 시간 지나면 thread pool로 반환을 함
단점 - 직접 핸들링하면서 제대로 쓰기엔 어려움
AIDL
AIDLCallBackClient
AIDLService
AIDLClient
activity Manager는 aidl 문서가 존재x 대부분 parcel
native로 시작하는 메소드는 c쪽 라이브러리를 직접 call
바인더통신, jni
<jni.h>는 jdk안에 있음
jstring Java_com_my_JNIClient_메소드명(JNIEnv* env, jobject this) { // 객체의 this값을 넘겨버림
}
Java_네임스페이스명_클래스명_메소드명(JNIEnv*env, jobject this, jint x, jint y)
javah
so 파일을 직접 만들어 내면 됨
(so 파일을 libs에 abi안에 넣어두면 됨, 로딩 가능 상태)
loadlibrary
Java에서 c 호출하기
c에서 Java 호출하기
"(I)I"
Z(boolean), B(byte), s(short) I(int) j(long) f(float) D(double), [type (배열)
레퍼런스타입은 L붙이고 마지막에 :을 붙임 ex) string : Ljava/lang/String:
예)
long fun(int n String s, int[] arr); => (ILjava/lang/String:[I)J
File explorer쪽
com.android.provider.contacts 여기 database안에 있음
에뮬레이터는 sd카드를 스캔하는작업을 따로 안하므로 devTool에 가서 mediaprovider에 가서 scan sdcard를 해준다..
이미지 관리는 contents provider를
settings도 contents provider에서 관리. e 쓰면 됨.