zoukankan      html  css  js  c++  java
  • 关于开启线程与UI的操作

    当应用程序启动,创建了一个叫“main”的线程,用于管理UI相关,又叫UI线程。其他线程叫工作线程(Work Thread)。

    Single Thread Model(单线程模型)

    一个组件的创建并不会新建一个线程,他们的创建都在UI线程中进行,包括他们的回调方法,如onKeyDown()

    • 当在UI线程中进行某些耗时的操作时,将会阻塞UI线程,一般阻塞超过5秒就会报错

    UI线程是非线程安全的,所以,不能在工作线程中操作UI元素。

     

    两个原则

    • Do not block the UI thread (不要阻塞UI线程)
    • Do not access the Android UI toolkit from outside the UI thread (不要在工作线程中操作UI元素)

     

    在工作线程更新UI方法

    • Activity.runOnUiThread(new Runnable),在子线程中直接调用
      runOnUiThread(new Runnable() {
                                      @Override
                                      public void run() {
                                          mTvShow.setText(respone);
                                      }
                                  });
    • Handler,,在Main中新建Handle实例,重写handleMessage(),方法,在里面用接受值操作UI
      Handler handler = new Handler(){
              @Override
              public void handleMessage(Message msg) {
                 Bundle bundle = msg.getData();
                  String aa = bundle.getString("aa");
                  mTvShow.setText(aa);
              }
          };

      在子线程中赋值,并且传值给Handle。

      Bundle bundle = new Bundle();
      Message message = Message.obtain(); bundle.putString(
      "aa",responseData); message.setData(bundle); handler.sendMessage(message);
    • AsyncTask
      • execute()
      • doInBackground()
      • onPostExecute()
  • 相关阅读:
    中国大学MOOC-数据结构基础习题集、07-2、Insert or Merge
    NSDate相关
    切换中文键盘时覆盖输入框的完美解决方案
    自定义UITableView的右侧索引
    调用系统的短信和发送邮件功能,实现短信分享邮件分享
    程序出现警告,解决方式
    键盘隐藏问题
    java修饰符
    java覆盖和隐藏
    java嵌套类
  • 原文地址:https://www.cnblogs.com/zhoushenglei/p/7202506.html
Copyright © 2011-2022 走看看