【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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章