주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
꽃배달 한국, 중국 전지역배송

android 기초닦기

hmily1314 | 2013.02.28 16:15:46 댓글: 0 조회: 3033 추천: 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
12039
관리자
2003-09-20
11580
관리자
2003-09-20
20741
지구인
2010-08-27
19515
지구인
2009-09-07
13835
SOLIDH
2010-01-29
15799
엔죠라이프
2004-10-07
16882
hmily1314
2013-02-28
3033
hmily1314
2013-02-25
6231
hmily1314
2013-02-22
6367
석류열매
2013-02-22
2872
hmily1314
2013-02-22
6306
싼리훙
2013-02-03
3464
CHOSUN
2013-01-29
1902
CHOSUN
2013-01-29
1815
종합마케팅
2013-01-14
3878
직원Sd
2013-01-13
2416
플러스다이
2013-01-01
4614
플러스다이
2013-01-01
3275
CHOSUN
2012-12-15
2098
CHOSUN
2012-12-15
1773
CHOSUN
2012-12-02
1966
CHOSUN
2012-11-02
2345
CHOSUN
2012-10-27
2407
CHOSUN
2012-10-13
2047
CHOSUN
2012-09-25
2076
CHOSUN
2012-09-22
4994
폐인
2012-09-19
3631
모이자 모바일