[220321] 안드로이드 공부 정리.

J·2022년 3월 21일
1

안드로이드

목록 보기
1/29
post-custom-banner
  • SharedPreferences : 저장하려는 키-값 컬렉션이 비교적 작은 경우 사용하는 API. 키-값 쌍이 포함된 파일을 가리키며, 키-값 쌍을 읽고 쓸 수 있는 간단한 메서드 제공, 프레임워크에서 관리하며 비공개, 공유 모두 가능하다.

  • e.printStackTrace() : 에러의 발생 근원지를 찾아서 단계별로 에러를 출력.

  • MODE_WORLD_READABLE : 외부 앱에서 읽기 가능.

  • URLEncoder : 웹 개발 시 URL의 여러가지 규칙 대문에 규칙에 맞게 문자를 변환해야 하는 경우가 생기는데, 이럴 때 인코딩(부호, 암호화)과 디코딩(부호, 암호화를 해제)를 한다. (ex - 쿠키처럼 한글을 표현하지 못하는 경우, ASCII 값으로 인코딩) 인코딩과 디코딩을 하기 위해서 필요한 것이 바로 URLEncoder와 URLDecoder이다.

  • InputMethodService : 입력방식(IME)을 생성하기 위해 Input Method Service 클래스를 확장한다. 이 클래스는 입력방식의 상태와 가시성을 권리하는 관점과 현재 Visible activity와의 통신관점에서 입력방식을 위한 기본구현을 제공한다.
    => 쉽게 말하면 특정동작 시, 소프트 키보드를 보여주고 싶을 때 사용한다고 보면 된다.
    InputMethodManager는 "android.view.inputmethod"에 존재한다.
    키보드를 보여줄 때는,
    Public boolean showSoftInput (View view, int flags, ResultReceiver resultRecevier)를 사용하고,
    키보드를 가릴 때는,
    Public boolean hideSoftInputFromWindow (IBinder windowToken, int flags)를 사용하면 된다.

  • sendMessageDelayed() : 지정한 시간만큼 뒤에 메세지를 전송하도록 하는 메소드.

  • UnsupportedEncodingException() : java.io - 이 패키지는, 데이터 스트림, 직렬화, 파일 시스템에 의한 시스템 입출력 용으로 제공된다.

  • setVisibility() : 버튼, 텍스트뷰, 이미지, 레이아웃 등 숨기거나/없애거나/다시 보이게 하거나3가지 동작이 가능하다.
    ① Visible : 보이게 함.
    ② Invisible : 가린다.(공간 차지)
    ③ Gone : 없앤다.(공간 차지X)

  • SDK에서 view의 LayerType은 총 3가지로 제공한다.
    ① LAYER_TYPE_NONE
    ② LAYER_TYPE_SOFTWARE
    ③ LAYER_TYPE_HARDWARE

  • LAYER_TYPE_SOFTWARE : 소프트웨어 그리기 모델에서는 다음 2가지의 절차를 통해서 그리기를 수행한다.
    ① Invalidate the hirearchy
    ② Draw the hirearchy
    예를 들어, TextView의 내용을 변경하고, invalidate() 함수를 호출하면 view의 hirearchy를 순회하면서 모든 view의 invalidate가 호출되면서 다시 그려야 할 영역(the dirty regin)을 구하게 된다.

  • NotiDialog : 다이아로그에 속성(값)을 주는 함수

  • setCanceledOnTouchOutside (true) : 다이아로그 바깥영역 터치 시, 다이아로그가 닫히지 않게 한다.

  • 안드로이드 Activity의 생명주기 7단계
    ① onCreate() : Activity가 생성될 때 실행되며, 화면을 정의하는 용도로 많이 사용된다. onCreate()가 완료되면 onStart()가 호출된다.
    ② onStart() : Activity가 사용자에게 보여질 때 실행되며, 아직 사용자와 상호작용이 불가능한 단계이다.
    ③ onResume() : 사용자와 상호작용하는 단계. Activity 스택의 Top에 위치하며, 주로 어플 기능이 onResume()에서 설정된다.
    ④ onPause() : Activity가 잠시 멈추는 단계에 실행되며, background에 Activity에 위치한다. onStop()이나 onResume() 상태로 전환된다.
    ⑤ onStop() : Activity가 사용자에게 보이지 않는 단계. onDestroy()나 onRestart() 상태로 전환 가능하다.
    ⑥ onRestart() : onStop()이던 Activity가 재시작되는 단계. onRestart() 뒤에는 onStart()가 자동으로 호출된다.
    ⑦ onDestroy() : onStop()이던 상태가 완전히 제거되는 단계. Activity가 호출하는 마지막 메소드이다.

  • obtainMessage() :
    ① Message.obtain() VS Handler.obtainMessage() : 둘 다 Global Message Pool의 인스턴스를 반환한다는 공통점이 있다.
    ② Message.obtain() : Global Message Pool에서 새 Message 인스턴스를 반환하지 않은 경우 새로운 객체의 할당을 피할 수 있다.
    ③ Handler.obtainMessage() : Global Message Pool에서 새 Message를 반환한다. 새 인스턴스를 생성하고 할당하는 것 보다 효율적이다. 검색된 Message에는 Message의 Handler가 설정되어 있다(Message.target == this). 만약 그것을 원하지 않는다면 Message.obtain()을 대신 사용하라.

  • currentTimeMillis() : 표준시간(협정세계시(UTC))와의 사이에 발생하는 차이, 즉, UTC 1970년 1월 1일 00:00:00.000을 기준으로 현재시간의 차이를 long 형으로 변환한다.

  • 안드로이드 Webview의 뒤로가기 함수 :
    Webview canGoBack, goBack 함수.
    안드로이드 웹 뷰에서 뒤로가기 버튼을 할 때, 페이지가 있으면 돌아가고, 없을 경우 앱을 종료하는 함수.

  • stopLoading() : 로딩 중단.

  • getVisibility() : View의 visibility 속성 확인.

  • setVisibility() : View의 속성 셋팅(VISIBLE/INVISIBLE/GONE)

  • loadUrl() : Url 호출.

  • clearHistory() : 웹뷰의 히스토리 삭제.

  • clearCache() : 웹 뷰 캐시 삭제.

  • clearFromData() : 폼 데이터 삭제.

  • CookieSyncManager() :
    브라우저 쿠키를 RAM과 영주 저장소 사이에서 동기화한다. 최상의 성능을 내기 위해, 브라우저 쿠키는 RAM에 저장되고, 별도의 쓰레드가 타이머에 의해 이 둘 사이에 동기화를 한다.

  • ClearCache() : 웹 뷰 캐시 삭제.

  • ClearFormData() : 폼 데이터 삭제.

  • CookieSyncManager() :
    브라우저 쿠키를 RAM과 영구저장소 사이에서 동기화한다.
    최상의 성능을 내기 위해서, 브라우저 쿠키는 RAM에 저장되고, 별도의 쓰레드가 타이머에 의해 이 둘 사이에서 동기화를 한다.

  • flingScroll() :
    사용자가 UI를 플링(왔다 갔다) 하는 것을 모방한다.
    vx 및 vy는 x좌표 및 y좌표 방향의 속도이다.
    (즉, 사용자가 스크롤 한 속도와 뷰 스크롤 거리를 결정한다.)

  • zoomIn() : 줌 인.

  • zoomOut() : 줌 아웃.

  • removeMessage() : 메세지 삭제.

  • getReadableDatabase() : SQLite Database 객체를 참조시 쓰이는 함수로, SQLiteDatabase 객체를 가져온다.

  • Context : 애플리케이션(객체)의 현재 상태의 맥락(Context).
    새로 생성된 객체가 지금 어떤 일이 일어나고 있는지를 알 수 있도록 한다.
    시스템의 핸들(Handle)과도 같아서, 리소스, DB, Preferences 등에 대한 접근을 제공한다.
    안드로이드에서 Context는 어디에나 있고 가장 중요한 것으로, 올바르게 사용해야 하며, 그렇지 못할 시 메모리 누수를 일으킬 수 있다.

  • split() : string 객체를 지정한 구분자를 이요하여 여러 개의 문자열로 나눈다.

  • IOException : Input/Output 오류 발생 시 throw 되는 예외.

  • getAssets() :
    ① 안드로이드 애셋(Asset) :
    미리 만들어둔 XML 파일을 앱을 일리즈할 때 APK(Android Package Kit) 파일에 포함시킨 다음, 앱에서 사용할 수 있게 만들 때 쓰이는데,
    파일을 APK(Android Package Kit)에 포함시켜 앱에서 사용할 수 있도록 만든 것을 안드로이드 애셋(Asset)이라고 한다.
    애셋(Asset)의 의미가 "자산"인 것을 떠올려보면, 앱이 릴리즈 되는 시점에, 앱 자신이 온전히 사용할 수 있는 파일들을 앱의 "자산", 즉 애셋(Asset)이라고 할 수 있다.
    안드로이드 애셋(Asset)의 파일을 사용하는 과정은 크게 세 가지로 나뉘는데, (1)첫 번째는 프로젝트에 애셋(Asset) 폴더를 추가하는 것이고, (2)두 번째는 추가된 애셋(Asset) 폴더에 파일을 포함시키는 것이다. 그런 다음 (3)마지막으로, AssetManager 클래스를 이용하면, 앱 실행 시, 애셋 폴더에 포함된 파일을 읽을 수 있다.

  • getWindow().getDecorView() : 액티비티의 View 정보 구하기.
    액티비티의 루트 뷰 (activity_main.xml - 파일의 루트 뷰) 정보를 가져올 수 있다. 루트뷰에 아이디가 없어도 사용 가능하다.
    <여러가지 뷰(view)정보 구하는 법>
    ① view 객체에 미리 담는 방법 :
    View view = getLayoutInflater.from(this).inflate(R.layout.main_activity, null);
    ② findViewById를 이용해 view 객체에 담는 방법 :
    setContentView(R.layout.main_activity, null);
    View view = findViewById(R.id.rootView);
    ③ Activity의 Context 정보로 구하는 법 :
    View view = context.getWindow().getDecorView();

  • setSystemUiVisibility() : 사용 설정, ~모드 사용 설정.

  • getWindow,getAttributes() : ~한 속성을 저장, 사이즈 조절(변경).

  • setScrollbarFadingEnabled : 보기가 스크롤 되지 않을 때, 스크롤 막대가 사라질지 여부를 정의한다.

  • setScrollBarStyle() : 스크롤바의 스타일을 지정한다.
    스크롤 막대는 오버레이되거나 삽입할 수 있다. 삽입되면 뷰의 패딩에 추가된다. 그리고 스크롤바는 패딩영역 내부나 뷰의 가장자리에 그릴 수 있다. 예를 들어 보기에 배경 드로어블이 있고, 드로어블에서 지정한 패딩 내부에 스크롤바를 그리려는 경우 SCROLLBARS_INSIDE_OVERLAY 또는 SCROLLBARS_INSIDE_INSET을 사용할 수 있다.
    패딩을 무시하고 뷰의 가장자리에 나타나게 하려면 SCROLLBARS_OUTSIDE_OVERLAY 또는 SCOLLBARS_OUTSIDE_INSET을 사용할 수 있다.

  • setMapTrackballToArrowkeys : API 레벨 17이상부터 더이상 사용되지 않음.

  • getSettings 사용법 :
    ① WebView.findViewById로 Initializing.
    ② WebView 사용 시 현재 WebView의 속성을 Setting
    ③ WebSetting set = WebView.getSettings();로 이용하거나 WebView.getSettings().세팅할메소드(설정 값)으로 바로 사용해도 됨.

  • setBuiltInZoomControls(true) : 줌이 가능하게 함.

  • getPackageManager() : 내 폰(또는 태블릿, 기기 등)에 설치된 앱 목록을 받아옴.

  • hasSystemFeature() : 지원되는 Feature 확인.

  • MODE_PRIVATE : 자기 앱에서만 사용하도록 설정하는 기본 값.

  • 자바 접근 제한자 :
    ① public 접근제한자 : 단어 뜻 그래도 외부 클래스가 자유롭게 사용할 수 있도록 한다.
    ② protected 접근제한자 : 같은 패키지 또는 자식 클래스에서 사용할 수 있도록 한다.
    ③ private 접근제한자 : 단어 뜻 그대로 개인적인 것이라 외부에서 사용할 수 없도록 한다.
    ④ default 접근제한자 : 위의 3가지 접근제한자가 적용되지 않으면 default 접근제한을 가진다. 같은 패키지에 소속된 클래스에서만 사용할 수 있도록 한다.

  • createPackageContext() :
    주어진 애플리케이션 이름에 대한 새로운 Context 객체를 반환한다.
    이 컨텐스트는 명명된 애플리케이션이 시작될 때 얻는 것과 동일하며 동일한 리소스와 클래스 로더를 포함한다. 이 메서드를 호출할 때마다 Context 개체의 새 인스턴스가 반환된다.
    Context 객체는 공유되지 않지만, 공동상태(Resource, ClassLoader 등)를 공유하므로 Context 인스턴스 자체가 상당히 가볍다.
    PackageManager.NameNotFoundException 지정된 패키지 이름을 가진 응용 프로그램이 없으면 throw 된다.
    SecurityException 보안상의 이유로 요청된 컨텐스트를 호출자의 프로세스에 로드할 수 없는 경우 throw 된다. (자세한 내용은 CONTEXT_INCLUDE_CODE 참조)

  • getSharedPreferences() : 이름으로 식별되는 공유 환경설정 파일이 여러 개 필요한 경우 이 메서드를 사용한다. 이름은 첫 번재 매개변수로 지정할 수 있다. 앱의 모든 Context에서 이 메서드를 호출할 수 있다. 새로운 공유 환경설정 파일을 생성하거나 기존 파일에 액세스할 수 있다.

  • getWindow().getDecorView() : Activity의 Context로 액티비티에 붙어져 있는 View를 구하는 방법.

  • InputMethodManager : 하드웨어 키보드는 스마트폰에서 물리적으로 제공하는 키보드로 우리의 앱에서 창을 제어하는 것과 관련된 기능을 제공하는 클래스가 InputMethodManager 이다.

  • getSystemService() : 주어진 매개변수에 대응되는 안드로이드가 제공하는 시스템-레벨 서비스를 요청한다. 시스템-레벨 서비스란 단순하게 메모리 내에 클래스의 인스턴스를 생성하여 프로그램을 구현하는 방법이 아니라 시스템에서 제공하는 디바이스나 안드로이드 프레임워크 내 기능을 다른 애플리케이션과 공유하고자 시스템으로부터 객체를 얻을 대 사용한다.

  • getWindow().requestFeature() : 윈도우에 기능을 요청하는 방법.

  • setContentView() :
    ① void setContentView (int layoutResID) : layout resource를 인자로 받는다. 이후 LayoutInflater를 통해 inflate 되어지고 이후 최상단 뷰에 add 된다.
    ② void setContentView(View view) : view를 인자로 받는다. 특정 view로 content를 구성하고 싶을 경우 사용된다. 한 가지 주의사항으로는 인자로 사용될 view의 width, height를 별도로 지정하여 사용하고자 하여도, 함수 내부적으로 기본 LayoutParam 상의 width, height를 MATH_PARENT로 설정하기 때문에 항상 MATH_PARENT로 content view가 설정된다는 점이다. 특정 크기로 지정하고 싶다면 별도의 Layout Param을 구성하여 ③메소드를 사용해야 한다.
    ③ void setContentView(View view, ViewGroup.LayoutParams params) : view와 LayoutParam을 인자로 받는다. ②에서 언급하고 있는 바와 같이 별도의 LayoutParam으로 Content View를 구성하고 싶을 때 사용되어진다.

  • trim() : 앞뒤의 공백을 없애주는 역할.

  • ContentValues() : 이 클래스는 ContentResolver가 처리할 수 있는 값 집합을 저장하는데 사용한다. ContentResolver는 콘텐트 프로바이더(ContentProvider)와 비즈니스로직의 중계자 역할을 하고있다.
    ContentValues는 ContentResolver가 사용하는 데이터 운송수단이라고 생각하면 좋을 것이다.

  • ContentValues 사용순서

  1. 객체 생성
  2. put 메서드를 사용해서 (항목, 값)을 DB테이블 순서에 맞게 집어넣는다.
  3. getContentResolver()를 통해 ContentResolver를 가져온다.
  4. ContentResolver.insert()의 (URI & ContentValues)를 매개변수로 넣어준다.
  5. ContentResolver.insert()가 받은 ContentValues 객체를 dbManager.insert()로 보내주며 중간다리 역할을 한다.
  6. getWritableDatabase()로 자신의 앱의 DB를 가져온다.
  7. 가져온 DB에 ContentValue 객체를 넣어 insert를 실행한다.
  8. insert가 실행 된 이후로는 dB에 정상적으로 값이 저장된다.

=> 간략히
1. ContentValuse 객체선언 및 DB에 입력할 데이터 선언
2. ContentResolver.insert()를 실행시켜 ContentValues 객체를 전달
3. ContentValues 객체 값을 다시 dbManager에게 전달
4. dbManager가 ContentValues의 값을 갖고 DB에 insert문 실행

  • insertOrThrow() : 데이터베이스에 행을 삽입하는 편리한 방법.

  • java.io.FileInputStream.available() : this 입력스트림에 대한 다음 메소드 호출에 의해 차단되지 않고 this 입력스트림에서 읽을 수 있는 나머지 바이트 수를 리턴한다. 다음 메서드 호출은 다음 스레드가 될 수 없다. => 현재 읽을 수 있는 바이트 수를 반환한다.

  • InputStream : 데이터를 읽어오는 기능
    ① Stream : 개별 바이트나 문자열인 데이터의 원천, 파일 읽거나 쓸 때, 네트워크 소켓을 거쳐 통신할 때 쓰이는 추상적인 개념. = "데이터가 전송되는 통로."

post-custom-banner

0개의 댓글