Android 更新UI的方法汇总
内容摘要
1、Activity的 runOnUiThread
textView = (TextView) findViewById( R.id.tv );
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnab
textView = (TextView) findViewById( R.id.tv );
new Thread(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnab
文章正文
1、Activity的 runOnUiThread
1 2 3 4 5 6 7 8 9 10 11 12 | 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()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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是安全的。
以上所述是 给大家介绍的Android 更新UI的方法汇总的相关知识,希望对大家有所帮助,如果大家有疑问欢迎给我留言,小编会及时回复大家的!
代码注释