Update textView from thread

前端 未结 2 1170
借酒劲吻你
借酒劲吻你 2020-12-06 06:58

In my OnCreate method I have created a thread that listens to incoming message!

In OnCreate() {

//Some code

myThread = new Thread() {

            @Overrid         


        
2条回答
  •  日久生厌
    2020-12-06 07:17

    Any updates to the UI in an Android application must happen in the UI thread. If you spawn a thread to do work in the background you must marshal the results back to the UI thread before you touch a View. You can use the Handler class to perform the marshaling:

    public class TestActivity extends Activity {
        // Handler gets created on the UI-thread
        private Handler mHandler = new Handler();
    
        // This gets executed in a non-UI thread:
        public void receiveMyMessage() {
            final String str = receivedAllTheMessage();
            mHandler.post(new Runnable() {
                @Override
                public void run() {
                    // This gets executed on the UI thread so it can safely modify Views
                    mTextView.setText(str);
                }
            });
    }
    

    The AsyncTask class simplifies a lot of the details for you and is also something you could look into. For example, I believe it provides you with a thread pool to help mitigate some of the cost associated with spawning a new thread each time you want to do background work.

提交回复
热议问题