메뉴
안드로이드의 메뉴는 옵션 메뉴와 컨텍스트 메뉴로 구분
옵션 메뉴
-메뉴 XML 파일 생성 후 Java에서 호출
-Java 코드만으로 메뉴를 생성하는 방법
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
MenuInflater mInflater = getMenuInflater();
mInflater.inflate(R.menu.메뉴XML아이디, menu);
return true;
}
컨텍스트 메뉴
-레이아웃 또는 버튼, 에디트텍스트 등의 위젯을 롱클릭하면 나타남
-windows의 팝업창과 비슷
프래그먼트
-레이아웃 안에 부분 화면으로 레이아웃을 넣을 수 있음
-태블릿과 같이 큰 화면에서는 한 화면에 여러 부분화면을 넣는 것이 효율적임
-프래그먼트는 부분화면을 독립적으로 만들어주며 액티비티를 그대로 본떠 생성
-하나의 액티비티에 하나의 프래그먼트를 전체 화면으로 보여주면 시스템과 관계없이 전체 화면을 전환하는 효과를 만들 수 있음
-프래그먼트는 액티비티 위에 올라가야 프래그먼트로 동작함 (프래그먼트는 각각 하나의 자바 파일과 xml 파일이 있어야 함)
-인플레이션을 위한 별도의 콜백 메소드를 제공함
-독립적인 상태 유지를 위해 수명주기 메소드를 제공함
비동기 처리 쓰레드
-메인 액티비티
-문제점
-해결 방안
-멀티 쓰레드
서비스 vs 쓰레드
-서비스
백그라운드 작업은 서비스로 실행하고 사용자에게는 알림 서비스를 이용해 알려줌
만약 메인 액티비티로 결과값을 전달하고 이를 이용해 다른 작업을 수행하고자 한다면 브로드캐스팅을 이용하거나 하여 결과값을 전달할 수 있음
-스레드
스레드는 동일 프로세스 내에 있기 때문에 작업 수행의 결과를 바로 처리할 수 있음
그러나 UI 객체는 직접 접근할 수 없으므로 핸들러(Handler) 객체를 사용함
쓰레드
running = true;
Thread thread1 = new BackgroundThread();
thread1.start();
class BackgroundThread extends Thread {
public void run() {
while (running) {
try {
Thread.sleep(1000);
value++;
} catch (InterruptedException ex) {
Log.e("SampleJavaThread", "Exception in thread.", ex);
}
}
}
}
-메인 쓰레드
-메시지 큐(Message Queue)
-핸들러(Handler)
비동기 처리 쓰레드
-obtainMessage()
-sendMessage()
-handleMessage()
-핸들러 클래스
-Runnable 객체