【Android通訊】多線程任務開發

多線程任務開發可以通過以下幾個方式實現:

1、Handler,如下:

public class MainActivity extends AppCompatActivity {  
  
    private MyHandler mHandler = new MyHandler(this);  
  
    private TextView mTextView ;  
  
    private static class MyHandler extends Handler {  
  
        private WeakReference<Context> reference;  
  
        public MyHandler(Context context) {  
  
            reference = new WeakReference<>(context);  
  
        }  
  
        @Override  
  
        public void handleMessage(Message msg) {  
  
            MainActivity activity = (MainActivity) reference.get();  
  
            if(activity != null){  
  
                activity.mTextView.setText("");  
  
            }  
  
        }  
  
    }  
  
    
  
    @Override  
  
    protected void onCreate(Bundle savedInstanceState) {  
  
        super.onCreate(savedInstanceState);  
  
        setContentView(R.layout.activity_main);  
  
        mTextView = (TextView)findViewById(R.id.textview);  
  
        loadData();  
  
    }  
  
    
  
    private void loadData() {  
  
        //...request  
  
        Message message = Message.obtain();  
  
        mHandler.sendMessage(message);  
  
    }  
  
    
  
    @Override  
  
    protected void onDestroy() {  
  
        super.onDestroy();  
  
        mHandler.removeCallbacksAndMessages(null);  
  
    }  
  
}  

請參考:http://blog.csdn.net/qq_29266921/article/details/54861596點擊打開鏈接


AsyncTask,如下:

public class MainActivity extends AppCompatActivity {  
  
    private MyAsyncTask mySyncTask= new MyAsyncTask (this);    
  
    

private static class MyAsyncTask extends AsyncTask<Void, Void, Void> {

        private WeakReference<Context> weakReference;

  

        public MyAsyncTask(Context context) {

            weakReference = new WeakReference<>(context);

        }

  

        @Override

        protected Void doInBackground(Void... params) {

            SystemClock.sleep(10000);

            return null;

        }

  

        @Override

        protected void onPostExecute(Void aVoid) {

            super.onPostExecute(aVoid);

            MainActivity activity = (MainActivity) weakReference.get();

            if (activity != null) {

                //...

            }

        }

    } 
   
  
    
  
    @Override  
  
    protected void onCreate(Bundle savedInstanceState) {  
  
        super.onCreate(savedInstanceState);  
  
        setContentView(R.layout.activity_main);

        mySyncTask.excute(); 
    }  
  

    @Override  
  
    protected void onDestroy() {  
  
        super.onDestroy();  
  
        myAsyncTask.cancle();
  
    }  
  
}
請參考:http://blog.csdn.net/q376420785/article/details/8882920點擊打開鏈接


發佈了80 篇原創文章 · 獲贊 65 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章