일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 메소드
- forensic
- 디지털포렌식 연구회 워크샵 #디지털포렌식 #디지털포렌식챌린지 #Forensic #ctf #정보보호학회
- 객체
- It
- 포렌식
- 디지털 포렌식
- snedmail #linux #정보보안기사 #정보보안산업기사 #mail protocol
- 파이썬
- CIDR #서브넷 #Network #ip 주소고갈
- 비박스 #웹취약점분석 #버그바운티 #bee-box #웹 #모의해킹
- 자바
- Forensic #CTF #디지털포렌식 #disk forensic
- evm
- #정보보안 #어셈블리 #저급언어 #기계어 #it #정보보안
- 정보보안기사 #정보보안산업기사 #2020년 정보보안기사 #시험일정
- 파일 접근 권한 #linux #chown #chmond #umask #명령어
- 정보보안기사 #정보보안산업기사 #클라우드컴퓨팅 #보안 #컴퓨팅보안
- 안드로이드 #스레드 #핸들러 #예제
- 탈중화
- PYTHON
- Forensic CTF #disk Forensic #windows file analyzer #WFA #Codegate 2012 F100
- java
- Injection #Reflected #웹취약점
- 프로그래밍
- 디지털포렌식챌린지 #dfchallenge #디지털포렌식 #Forensic
- 코딩
- HTML Injection #bWAPP
- EnCase #mount #Forensic #image mount
- 안드로이드 #서비스 #안드로이스 서비스 #Android #java
Archives
- Today
- Total
Jsecurity
안드로이드 - 스레드와 핸들러 예제실습 본문
스레드란
- 스레드는 하나의 프로세스 내에서 실행되는 작업의 단위를 말하며, 하나의 운영 체계에서 여러 개의 프로세스가 동시에 실행되는 환경이 멀티태스킹이고, 하나의 프로세스 내에서 다수의 스레드가 동시에 수행되는 것이 멀티스레딩이다.
핸들러란
- 안드로이드에서는 화면UI에 접근하는 것을 막아두고 실행 시 생성되는 메인 스레드를 통해서만 화면 UI를 변경할 수 있기 때문에 핸들러를 통해서 메인 스레드에 접근하여 UI를 수정한다.
- 핸들러는 메시지처리 방식과 Runable객체 실행방식이 있다.
안드로이드 핸들러 (예제)
메시지 처리 방식
public class MainActivity extends AppCompatActivity {
Button btnStart;
TextView tvResult;
int value=0;
MainHandler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = findViewById(R.id.btnStart);
tvResult = findViewById(R.id.tvResult);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BackgroundThread thread = new BackgroundThread();
thread.start();
}
});
handler = new MainHandler();
}
class BackgroundThread extends Thread{
public void run() {
for (int i=0; i<10; i++){
try {
Thread.sleep(1000);
}catch (Exception e){}
value += 1;
Log.d("Thread", "value: " + value);
Message message = handler.obtainMessage();
Bundle bundle = new Bundle();
bundle.putInt("value",value);
message.setData(bundle);
handler.sendMessage(message);
}
}
}
class MainHandler extends Handler{
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
Bundle bundle = msg.getData();
int value = bundle.getInt("value");
tvResult.setText("value: "+value);
}
}
}
Runable 객체 실행방식
public class MainActivity extends AppCompatActivity {
Button btnStart;
TextView tvResult;
int value=0;
Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = findViewById(R.id.btnStart);
tvResult = findViewById(R.id.tvResult);
btnStart.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BackgroundThread thread = new BackgroundThread();
thread.start();
}
});
}
class BackgroundThread extends Thread{
public void run() {
for (int i=0; i<10; i++){
try {
Thread.sleep(1000);
}catch (Exception e){}
value += 1;
Log.d("Thread", "value: " + value);
handler.post(new Runnable() {
@Override
public void run() {
tvResult.setText("value 값: "+value);
}
});
}
}
}
}
Comments