주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
연길시 신화서점 조선말 도서

android 기초닦기

hmily1314 | 2013.02.28 16:15:46 댓글: 0 조회: 3025 추천: 0
분류웹 프로그래밍 https://life.moyiza.kr/itstudy/1856737

android Thread에서 주의할점?

UI Thread에 명심해야 합니다.

아래 소스는Thread로 mImageView에 bitmap이미지를 입히는 것입니다.
public void onClick(View v) {    
new Thread(new Runnable() {       
 public void run() {            
Bitmap b = loadImageFromNetwork("http://example.com/image.png");           
 mImageView.setImageBitmap(b);       
 }   
 }).start();
}
이 소스를 실행해보시면 이미지가 입혀지지 않을겁니다.

이유는 android application이 실행될때 mian Thread가 돌아가고 main Thread에서 직접 UI Thread의 리소스에 접근하여 수정이 불가능합니다.
(android홈피에 가보면 Thread-safe methods가 어쩌고 저쩌고 ㅎㅎㅎ)
*** 주의 ***  
bound service와 ContentResolver and ContentProvider classes  반드시 동시에 여러개 쓰리드가 한개 자원에 접근하는것을 방지한다

그래서 android에서는 여러가지 방안을 제시하였습니다.
1. Activity.runOnUiThread(Runnable)
2. View.post(Runnable)
3. View.postDelayed(Runnable, long)
4. AsyncTask

post를 예로 들어보자.
public void onClick(View v) {    
new Thread(new Runnable() {        
public void run() {           
 final Bitmap bitmap = loadImageFromNetwork("http://example.com/image.png");        
    mImageView.post(new Runnable() {               
 public void run() {                   
 mImageView.setImageBitmap(bitmap);              
  }          
  });      
  }   
 }).start();
 }
자주사용 하는 AsyncTask는 Thread에 대한 개념이 없어도 사용이 가능합니다.(이놈 진짜 막강합니다. 개념없이 코딩이 가능합니다.)
*** 주의 ***
onPreExecute(), doInBackground() ,onPostExecute() 가 순서대로 실행됩니다.

public void onClick(View v) {   
 new DownloadImageTask().execute("http://example.com/image.png");

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> { 
   protected Bitmap doInBackground(String... urls) {    
    return loadImageFromNetwork(urls[0]);     }  
  protected void onPostExecute(Bitmap result) {   
     mImageView.setImageBitmap(result); 
   }
 }

추천 (0) 선물 (0명)
IP: ♡.247.♡.19
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11814
관리자
2003-09-20
11363
관리자
2003-09-20
20473
지구인
2010-08-27
19298
지구인
2009-09-07
13609
SOLIDH
2010-01-29
15571
엔죠라이프
2004-10-07
16671
hmily1314
2013-02-28
3025
hmily1314
2013-02-25
6228
hmily1314
2013-02-22
6364
석류열매
2013-02-22
2868
hmily1314
2013-02-22
6301
싼리훙
2013-02-03
3460
CHOSUN
2013-01-29
1899
CHOSUN
2013-01-29
1811
종합마케팅
2013-01-14
3873
직원Sd
2013-01-13
2413
플러스다이
2013-01-01
4610
플러스다이
2013-01-01
3272
CHOSUN
2012-12-15
2096
CHOSUN
2012-12-15
1771
CHOSUN
2012-12-02
1964
CHOSUN
2012-11-02
2343
CHOSUN
2012-10-27
2402
CHOSUN
2012-10-13
2042
CHOSUN
2012-09-25
2071
CHOSUN
2012-09-22
4992
폐인
2012-09-19
3626
모이자 모바일