zoukankan      html  css  js  c++  java
  • Android利用Looper在子线程中改变UI

    MainActivity如下:

    package cn.testlooper;
    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Looper;
    import android.widget.TextView;
    import android.widget.Toast;
    /**
     * Demo描述:
     * 在子线程中Looper的使用
     * 
     * 测试结果:
     * 可在子线程中更改UI
     * 
     * 原理备注:
     * 在View和Toast的源码中均含有一个Handle
     * 这样的话在子线程中:
     * Handle Message Looper MessageQueue这套机制 
     * 就齐备了.
     * 关于此原理有待于进一步研究
     * 
     * 参考资料:
     * http://blog.csdn.net/xiaanming/article/details/9344703
     */
    public class MainActivity extends Activity {
        public TextView mTextView;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		init();
    	}
    
    	private void init() {
    		mTextView=(TextView) findViewById(R.id.textView);
    		testLooper();
    	}
    	
    	private void testLooper(){
    		new Thread(new Runnable() {
    			@Override
    			public void run() {
    				Looper.prepare();
    				mTextView.setText("9527");
    				Toast.makeText(MainActivity.this, "hello", Toast.LENGTH_LONG).show();
    				Looper.loop();
    			}
    		}).start();
    	}
    
    }
    


    main.xml如下:

    <RelativeLayout 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"
        >
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world"
            android:layout_centerInParent="true"
            android:textSize="25sp"
         />
    
    </RelativeLayout>


     

  • 相关阅读:
    面向对象(五)-魔法方法
    面向对象(四)-实例,类,静态方法
    生成随机数
    vue中自己新建的组件怎么使用
    时间戳转时间
    js基础知识(一)--去除重复数据
    vue 实现底部导航栏
    dgl库:dgl._ffi.base.DGLError: [18:13:27] _func_ext.h:117: Check failed: ObjectTypeChecker<TObjectRef>::Check(sptr.get())
    DGL安装
    geopandas包安装
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3233897.html
Copyright © 2011-2022 走看看