Update textView from thread

前端 未结 2 1155
借酒劲吻你
借酒劲吻你 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:12

    Android supports message-passing concurrency using handlers and sendMessage(msg). (It is also possible to use handlers for shared-memory concurrency.) One tip is to call thread.setDaemon(true) if you wish the thread to die when the app dies. The other tip is to have only one handler and use message.what and a switch statement in the message handler to route messages.

    Code and Code

    0 讨论(0)
  • 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.

    0 讨论(0)
提交回复
热议问题