隨著開發(fā)項目的變化,一些入口界面會出現(xiàn)增減、或者內(nèi)容變化、跳轉界面變化等等問題,今天是武林技術頻道小編給大家?guī)淼?a target="_blank">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(); }}在子線程中切換到主線程
new Thread(new Runnable() { @Override public void run() { LogUtil.d( "ttt 11111111111" + Thread.currentThread().getName() ); new Handler(Looper.getMainLooper()).post(new Runnable() { @Override public void run() { LogUtil.d( "ttt 55555555" + Thread.currentThread().getName() ); } }); LogUtil.d( "ttt 22222222222" + Thread.currentThread().getName() ); LogUtil.d( "ttt 33333333333" + Thread.currentThread().getName() ); LogUtil.d( "ttt 44444444444" + Thread.currentThread().getName() ); }}).start();結果
ttt 11111111111Thread-155ttt 22222222222Thread-155ttt 33333333333Thread-155ttt 44444444444Thread-155ttt 55555555main
可見這種方式可以快速切換線程,從log日志來看,切換到主線程不會阻塞子線程。
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();上述是武林技術頻道小編為大家介紹的Android UI更新的幾種方法總結,希望對你學習這方面知識有所幫助,也希望大家能一如既往的支持我們。
新聞熱點
疑難解答
圖片精選