Android中关于“UI只能在主线程中更新”说法的理解
2018-01-29 16:43
369 查看
首先该说法不严谨,正确的说法是,UI只能在创建它的线程中更新。如下代码说明这个问题
1、MainActivity
2、activity_main.xml
功能很简单,在按钮的点击事件中新建一个子线程,在该线程中创建一个TextView的UI并对其进行赋值,然后获取值并打印。点击按钮后,控制台的日志如下
1、MainActivity
package cn.test.uitest; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void changeText(View view) { new Thread(new Runnable() { @Override public void run() { TextView textView = new TextView(MainActivity.this); textView.setText("修改后的文字"); Log.d("changeText" , textView.getText().toString()); } }).start(); } }
2、activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="cn.test.uitest.MainActivity"> <Button android:text="改变文字" android:onClick="changeText" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
功能很简单,在按钮的点击事件中新建一个子线程,在该线程中创建一个TextView的UI并对其进行赋值,然后获取值并打印。点击按钮后,控制台的日志如下
01-29 16:31:46.871 3163-3185/cn.test.uitest D/changeText: 修改后的文字
相关文章推荐
- Android 更新UI 只能在主线程?
- 主线程负责交互(事件处理)和UI绘制(onDraw), 只能在主线程访问View, 其他线程不能直接访问View (Android)
- Android只有主线程才能更新UI?
- Android中关于主线程的理解
- 【Android】关于在Service中通过接口回调更新Activity的UI
- Android中通过其他线程更新主线程UI
- Android中通过其他线程更新主线程UI
- android 关于线程更新UI控件,包括gridview,textview,imageview等
- android系统中的多线程(二): 关于在work thread中对UI进行更新和设置
- “只能在UI主线程更新View”这件小事,android ui
- Android关于线程更新UI的方法
- 关于android的UI更新机制与误区
- 关于Handler在异步更新UI作用的一些理解
- Android中为什么主线程更新UI,子线程执行耗时操作?
- Android 在子线程中更新主线程UI
- Android中通过其他线程更新主线程UI
- 关于Android ListItem动态更改item UI不更新问题
- 【Android和iOS】快速切换到主线程更新UI
- Android关于线程更新UI的方法
- android线程间通信和主线程更新ui