일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스카이 안드로이드폰 시리우스 K양 동영상
- 구글 안드로이드
- 안드로이드개발
- 안드로이드
- 안드로이드 개발 2.0
- 안드로이드폰
- sky 시리우스폰
- 아이폰 배경화면
- 스마트폰 배경화면
- 영어
- 구글안드로이드
- 안드로이드 바탕화면
- 안드로이드2.0개발
- 안드로이드 2.0 개발
- objective-c
- 안드로이드2.0
- 스카이 안드로이드폰 시리우스
- SKY 시리우스
- MapView
- 안드로이드 배경화면
- 안드로이드 개발
- 구글 안드로이드 개발
- 아이폰 바탕화면
- Form Stuff
- 안드로이드 개발 2.0 강좌
- 안드로이드 개발 강좌
- 인기있는 블로그 만들기
- android
- 하루한마디영어
- 하루 한마디 영어
- Today
- Total
moozi
runOnUiThread 와 AsyncTask 비교 본문
- Activity_Main.xml (공통)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.naver.thread01.MainActivity">
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1번진행률"
/>
<ProgressBar
android:id="@+id/pb1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2번진행률"
/>
<ProgressBar
android:id="@+id/pb2"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="쓰레드 시작"/>
</LinearLayout>
- Thread1 : runOnUiThread
package com.naver.thread01;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
ProgressBar pb1, pb2;
TextView tv1, tv2;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pb1=(ProgressBar)findViewById(R.id.pb1);
pb2=(ProgressBar)findViewById(R.id.pb2);
tv1=(TextView)findViewById(R.id.tv1);
tv2=(TextView )findViewById(R.id.tv2);
btn=(Button)findViewById(R.id.btn1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(){
public void run(){
for(int i=0;i<100;i=i+2){
//Main스레드에서 UI를 변경하도록 요청
//UI변경작업은 runOnUiThread를 통해서 처리.
runOnUiThread(new Runnable() {
@Override
public void run() {
pb1.setProgress(pb1.getProgress()+2);
tv1.setText("1번진행률:"+pb1.getProgress()+"%");
}
});
SystemClock.sleep(100);//0.1초 지연
}
}
}.start();
new Thread(){
public void run(){
for(int i=0;i<100;i++){
runOnUiThread(new Runnable() {
@Override
public void run() {
pb2.setProgress(pb2.getProgress()+1);
tv2.setText("2번진행률:"+pb2.getProgress()+"%");
}
});
SystemClock.sleep(100);//0.1초 지연
}
}
}.start();
}
});
}
}
- Thread2 : AsyncTask
package com.naver.thread02;
import android.os.AsyncTask;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//Thread처리 Class
class myAsyncTask extends AsyncTask<String, String, Void> {
@Override
protected Void doInBackground(String... strings) {
//주작업은 여기에 코딩
Log.d("=============","doInBackground()실행됨:");
for(int i=0;i<=100;i++) {
//onProgressUpdate호출
publishProgress(Integer.toString(2*i), Integer.toString(i));
SystemClock.sleep(100);//0.1초 지연
}
return null;
}
protected void onProgressUpdate(String... progress) {
pb1.setProgress(Integer.parseInt(progress[0]));
tv1.setText("1번진행률:"+pb1.getProgress()+"%");
pb2.setProgress(Integer.parseInt(progress[1]));
tv2.setText("2번진행률:"+pb2.getProgress()+"%");
}
}
ProgressBar pb1, pb2;
TextView tv1, tv2;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pb1=(ProgressBar)findViewById(R.id.pb1);
pb2=(ProgressBar)findViewById(R.id.pb2);
tv1=(TextView)findViewById(R.id.tv1);
tv2=(TextView )findViewById(R.id.tv2);
btn=(Button)findViewById(R.id.btn1);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new myAsyncTask().execute();
}
});
}
}
'안드로이드개발강좌' 카테고리의 다른 글
android xml 파싱 (0) | 2017.09.27 |
---|---|
BroadCast Action List (0) | 2017.09.27 |
custom listview (0) | 2017.09.22 |
안드로이드 그림판 예제 (0) | 2017.09.20 |
EditText 입력시 소프트키보드 안나오게 하기 (0) | 2017.09.13 |