美文网首页
(Thread)子线程不能操作UI线程

(Thread)子线程不能操作UI线程

作者: 昨天剩下的一杯冷茶 | 来源:发表于2018-11-02 12:07 被阅读1次

解决方法:
https://www.jianshu.com/p/59aaf7b1c9e5

布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.hzx.androidthreadtest.MainActivity">

    <Button
        android:id="@+id/btn_change_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Change Text"/>
    <TextView
        android:id="@+id/show_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello world"
        android:textSize="25sp"/>

</RelativeLayout>

Acitvity

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private TextView text;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        text = (TextView)findViewById(R.id.show_text);
        //Button btn_change_text = (Button)findViewById(R.id.btn_change_text);
        //btn_change_text.setOnClickListener((View.OnClickListener) MainActivity.this);

        findViewById(R.id.btn_change_text).setOnClickListener((View.OnClickListener) this);

    }

    public void onClick(View v){
        switch (v.getId()){

            case R.id.btn_change_text:
                new Thread(new Runnable(){
                    public void run(){
                        text.setText("Nice to meet you");
                    }
                }).start();
                break;
                default:
                    break;

        }

    }
}

需要注意:
1、 需要实现implements View.OnClickListener


image.png image.png

解决方法:Android中的异步消息处理

相关文章

  • (Thread)子线程不能操作UI线程

    解决方法:https://www.jianshu.com/p/59aaf7b1c9e5 布局文件 Acitvity...

  • 多线程

    不能再非主线程中修改UI控件属性,不建议在主线程中做耗时操作 UI线程:主线程Activity Thread Me...

  • 理解JS 线程,和Android线程

    1,Android开发都知道,UI线程,和子线程; UI线程:可以操作ui界面, 子线程:不可以操作ui界面 2,...

  • iOS子线程操作UI

    首先声明一点:子线程里面是可以更新UI的。 之所以说子线程不能操作UI是因为UIKit不是线程安全的。UI操作涉及...

  • 接口回调应该注意的问题

    需要注意的问题 回调的方法应该区分是子线程还是主线程 子线程不能操作UI

  • 关于Handler的简单理解

    handler主要用于线程的切换,因为在安卓中,主线程不能进行耗时操作,而子线程不能更新UI,所以当子线程网络请求...

  • 第八周随笔--线程

    Main/UI Thread && Worker Thread 一般情况下,Worker线程不能直接更新主线程的...

  • 自线程绘制UI & equals和hashcode方法

    1.为什么不能在子线程做UI绘制 简单的说,ViewRootImpl对象生成之后,就不能在子线程操作UI,某些可以...

  • AsyncTask 完全解析

    AsyncTask 完全解析 引言 我们知道,在 Android 中,UI 线程不能执行耗时操作;在子线程中不能执...

  • Android 进阶之 Handler 消息机制

    众所周知,在 Android 中,非 UI 线程中是不能更新 UI 的,如果在子线程中做 UI 相关操作,可能会出...

网友评论

      本文标题:(Thread)子线程不能操作UI线程

      本文链接:https://www.haomeiwen.com/subject/xdgqxqtx.html