public class MainActivity extends AppCompatActivity {
TextView text1;
TextView text2;
boolean isRunning = false;
//화면 처리용 핸들러
DisplayHandler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = findViewById(R.id.textView);
text2 = findViewById(R.id.textView2);
isRunning = true;
handler = new DisplayHandler();
//오래걸리는 건 쓰레드로 보낸다.
Runnable runnable =new Runnable(){
@Override
public void run(){
while(isRunning)//오래걸리는 작업으로 가정
{
SystemClock.sleep(1000);
long now = System.currentTimeMillis();
Log.d("test", ""+now/1000*60*60);
//화면에 관련된 작업은 핸들러로 옮긴다. (7버전이하는 오류발생)
handler.sendEmptyMessage(0); //작업 구분
SystemClock.sleep(1000);
handler.sendEmptyMessage(1); //작업 구분, msg의 인자
SystemClock.sleep(1000);
//핸들러 화면처리를 위한 데이터 전달 , 정수 2 개(arg1,arg2) 객체 1개 (obj)
Message msg = new Message();
msg.what = 2;
msg.arg1 = 1;
msg.arg2 = 2;
msg.obj = now; //모든 형식 가능
handler.sendMessage(msg);
}
}
};
Thread thread = new Thread(runnable);
thread.start();
}
//개발자가 발생시킨 쓰레드에서부터 화면에 관련된 처리를 하귀 위해 작업 요청시 사용
//자동으로 호출되는 메서드(메인 쓰레드가 발생)
//오래걸리는 작업은 안된다.
class DisplayHandler extends Handler
{
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch (msg.what)
{
case 0:
text2.setText("핸들러 1"); //화면 작업
break;
case 1:
text2.setText("핸들러 2");
break;
case 2:
text2.setText(msg.arg1+ " "+msg.arg2 +" "+ msg.obj);
break;
}
}
}
public void btnMethod(View view){
long now = System.currentTimeMillis();
text1.setText("clicked: "+now/1000*60*60);
}
@Override
protected void onDestroy() {
super.onDestroy();
isRunning = false;
}
}
'Front-end > Android (안드로이드 앱 개발)' 카테고리의 다른 글
Android Studio , URI (Intent)Activity Action / 공통 인텐트 / 구글 지도, 크롬, 다이얼, 전화걸기, 웹검색 (0) | 2020.07.30 |
---|---|
Android Studio , Intent 로 객체 전달하기, Parcelable (0) | 2020.07.28 |
Android studio (안드로이드 스튜디오) 구글 API 설정하기, google api (0) | 2020.03.22 |
Android studio (안드로이드 스튜디오) Authrization 위험권한 부여하기 permission (0) | 2020.03.18 |
Android studio (안드로이드 스튜디오) Network 통신, retrofit2, stetho , 이클립스 서버와 통신 (0) | 2020.03.17 |
댓글