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

android 기초닦기

hmily1314 | 2013.02.28 16:15:46 댓글: 0 조회: 3024 추천: 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
11761
관리자
2003-09-20
11296
관리자
2003-09-20
20369
지구인
2010-08-27
19225
지구인
2009-09-07
13527
SOLIDH
2010-01-29
15507
엔죠라이프
2004-10-07
16617
CHOSUN
2013-07-23
1719
지금이순감
2013-07-19
2342
hmily1314
2013-06-05
2040
hmily1129
2013-05-28
3080
hmily1129
2013-05-24
1475
hmily1129
2013-05-20
2025
hmily1129
2013-05-04
1808
hmily1314
2013-04-28
2371
hmily1314
2013-04-22
2512
hmily1314
2013-04-14
1735
hmily1314
2013-04-14
1668
hmily1314
2013-04-14
2275
CHOSUN
2013-04-11
2363
CHOSUN
2013-04-11
2224
CHOSUN
2013-04-11
1457
CHOSUN
2013-04-11
1496
CHOSUN
2013-04-11
1602
CHOSUN
2013-04-11
1415
CHOSUN
2013-04-11
1531
진심은
2013-03-29
4123
진심은
2013-03-29
4139
모이자 모바일