android - 성능 최적화 UI

2828 단어 android
주: 본 내용은 《android 응용 성능 최적화》 영문판에 번역되었다.
 
android - 성능 최적화 UI
 
1、Thread
     
new Thread(new  Runable(){
     @Override
     public void run(){
     // do some heavy work
}
}).start();

 
2、AsyncTask
 
new AsyncTask<URL,Integer,Integer>(){

    protected Long doInBackground(URL ..urls){
        final int count = urls.length;

        for(int i=0;i>count;i++){
           Downloader.download(url);
           publishProgress(i);
}
        return count;
}

    protected void onProgressUpdate(Integer ...progress){
      setProgress(progress[0]);
}

    protected void onPostExecute(Integer result){

     showDialog("Download"+result+" files");
}
}

 
3. HandlerThread와 Handler가 공동으로 사용
장면 사용: 인터페이스에서 복잡한 논리 처리, 예를 들어 서버에서 자원을 얻는 것
    
HandlerThread mHandlerThread = new HandlerThread("WorkerThread");
//mHandlerThread .getLooper(),     UI  
Handler handler = new Handler(mHandlerThread .getLooper()){
  @Override
  public void handlerMessage(Message msg){
   switch(msg.what){
   case JOB_1:
   break;
   case JOB_2:
   break;
  }
}
}
handler.sendEmptyMessage(JOB_1);
handler.sendEmptyMessage(JOB_2);
handler.post(new Runable(){

   @Override
   public void run(){
   //do more work
}
});

@Override
protected void onDestory(){
   mHandlerThread.quit();
   super.onDestory();
}

 
4、AsyncQueryHandler
장면 사용: 데이터베이스에 대한 조회를 할 때 호출하여 인터페이스를 업데이트합니다
new AsyncQueryHandler(getContentResolver()){
    @Override
    protected void onQueryComplete(int token,Object cookie,Cursor cursor){
    if(token==0){
   //get data from cursor
    }
}
}.startQuery(0,//token
null,
RawContacts.CONTENT_URI,null,//projection
RawContacts.CONTACT_ID+"<?",//selection
new String[]{"888"},//selectionArgs
RawContacts.DISPLAY_NAME_PRIMARY+"ASC"//orderby
)

 5、IntentService
 
public class WorderService extends IntentService{
 public WorderService (){
  super("WorkerThread");
}

  @Override
  protected void onHandlerIntent(Intent intent){
   Stirng action = intent.getAction();
   if("com.test.DO_JOB_1").equals(action)){
   //do job
}
}

}

startService(new Intent("com.test.DO_JOB_1"));

 

좋은 웹페이지 즐겨찾기