간단한 앱에 사용되는 안드로이드 이론1
6.7 결과를 받는 액티비티를 이용하여 바이오리듬 그리기.
- 액티비티 2개 만들기 : 메인 액티비티에서 데이터 입력 액티비티 이동(?)해주는 버튼 터치 -> 한 액티비티(데이터 입력 액티비티)에 데이터 입력 ->
메인 액티비티에 입력한 데이터 전달 후 메인 액티비티가 입력받은 정보로 바이오리듬 그리기.
※액티비티 간의 이동은 인텐트를 사용(문자열이나 Bundle을 이용해 액티비티간의 정보를 전달 할 수 있음)
startActivityForResult()로 메인 액티비티에서 다른 액티비티로 이동가능.
작업이 끝나고 메인으로 돌아가려고 할 떄, setResult()를 호출하고 자신의 액티비티는 finish()로 끝냄.
데이터 결과를 갖고 메인에 돌아오면 onActivityResult()가 호출됨. 메인에서 인텐트를 통해 Extra(Bundle)를 얻고,
이 정보를 이용해 그래프를 그림.
6.8 쓰레드를 이용하여 0.1초마다 움직이는 싸인 곡선 그리기
1. 0.1 초마다 변화된 값을 구하기 위해 쓰레드를 사용.
※서브 쓰레드에서 메인의 화면 쓰레드에 접근할 수 없기 때문에 UI 쓰레드를 사용해야 함.
-> 쓰레드 작성 방법과 UI쓰레드 사용법 익히기
- UI쓰레드는 액티비티의 runOnUiThread() 메서드를 호출해서 사용. 컨텍스트는 액티비티의 정보를 갖는 액티비티의 부모 클래스임.
만약 컨텍스트를 생성자에서 받았다면, 액티비티가 필요하므로 자식으로 (액티비티)타입 캐스팅함.
이후 run()을 구현
cf) View에서 넓이를 항상 높이보다 크게 하려면(=가로 화면으로 봄) 메니페스트의 방향을 landscape로 설정.
반대로 항상 높이를 넓이보다 크게 하려면(=세로 화면) portrait로 설정.
예) <activity android:name=".MainActivity" android:screenOrientation="landscape">
2. 쓰레드 보다 핸들러 사용을 권장함. : 핸들러는 sendMessage()를 호출하면 handleMessage()가 자동으로 호출되는 방법을 사용.
핸들러의 sendMessagegeXXX()(sendMessage(), sendMessageDelayed(), sendEmptyMessageDelayed())를 호출하면 자동으로 handleMessage()를 실행시키는 원리임.