Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android 更新UI的幾種方式,android更新ui幾種

Android 更新UI的幾種方式,android更新ui幾種

編輯:關於android開發

Android 更新UI的幾種方式,android更新ui幾種


1、Activity的 runOnUiThread   

 textView = (TextView) findViewById( R.id.tv );
        new Thread(new Runnable() {
            @Override
            public void run() {

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        textView.setText( "更新UI了");
                    }
                });
            }
        }).start();

android Activity runOnUiThread() 方法使用

2、Handler sendEmptyMessage()

package lib.com.myapplication;

import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView textView ;

    Handler handler = new Handler( ) {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            textView.setText( "Ui更新了");
        }
    };

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

        textView = (TextView) findViewById( R.id.tv );
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep( 2000 );
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                handler.sendEmptyMessage( 2 ) ;
            }
        }).start();

    }
}

3、Handler  post()

package lib.com.myapplication;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private TextView textView ;

    Handler handler = new Handler();

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

        textView = (TextView) findViewById( R.id.tv );

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep( 2000 );
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        textView.setText( "Ui更新了");
                    }
                }) ;
            }
        }).start();

    }
}

4、view Post() 

 textView = (TextView) findViewById( R.id.tv );
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep( 2000 );
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                textView.post(new Runnable() {
                    @Override
                    public void run() {
                        textView.setText( "Ui更新了");
                    }
                }) ;
            }
        }).start();

總結:

1、其實上面的四種方式都可歸結於一種方式:handler 用於Android線程之間的通信。

2、為什麼android要求只能在UI線程進行UI操作? 主要還是為了避免多線程造成的並發的問題。在單線程操作UI是安全的。

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved