zoukankan      html  css  js  c++  java
  • android 解决子线程进行UI操作

    Android确实不允许在子线程中进行UI操作的,但我们有时必须在子线程里去执行一些耗时的任务,然后根据任务的执行结果来更新相应的UI控件。

    Android提供了一套异步消息处理机制,可以解决子线程中进行UI操作的问题。

    例子:

    public class MainActivity extends AppCompatActivity {
    
        public static  final int UPDATE_TEXT = 1;
    
        private TextView textView;
    
        private Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                switch (msg.what){
                    case UPDATE_TEXT:
                        textView.setText("chenzquan");
                }
            }
        };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            textView = findViewById(R.id.textView);
            Button button = findViewById(R.id.button);
    
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    new Thread(new Runnable() {
                        @Override
                        public void run() {
                            Message message = new Message();
                            message.what = UPDATE_TEXT;
                            handler.sendMessage(message);
                        }
                    }).start();
    
                }
            });
        }
    }

    还可以使用AsyncTask工具

    AyncTask背后的实现原理也是基于异步消息处理机制

  • 相关阅读:
    Investment_完全背包
    Recaman's Sequence_递推
    MooFest_二维树状数组
    Mobile phones_二维树状数组
    Matrix_二维树状数组
    Get Many Persimmon Trees_枚举&&二维树状数组
    树状数组基础知识
    The Cow Lineup_找规律
    [SOJ] 简单哈希
    sscanf() 函数
  • 原文地址:https://www.cnblogs.com/zquan/p/9387871.html
Copyright © 2011-2022 走看看