Android基础之UI更新的四种方式
2016-05-19 10:01
232 查看
1.hanler
2.post
public class MainActivity extends AppCompatActivity { private TextView tv; Handler mHandler = new Handler(){ @Override public void handleMessage(Message msg) { if(msg.what == 1){ tv.setText("使用handler更新UI"); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); new HandlerThread().start(); } class HandlerThread extends Thread{ @Override public void run() { try { Thread.sleep(1000); Message msg = new Message(); msg.what = 1; mHandler.sendMessage(msg); } catch (InterruptedException e) { e.printStackTrace(); } } } }
2.post
public class MainActivity extends AppCompatActivity { private TextView tv; Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); new HandlerThread().start(); } class HandlerThread extends Thread{ @Override public void run() { try { Thread.sleep(1000); mHandler.post(new Runnable() { @Override public void run() { tv.setText("使用post更新UI"); } }); } catch (InterruptedException e) { e.printStackTrace(); } } } }3.runOnUiThread
public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); new MyThread().start(); } class MyThread extends Thread{ @Override public void run() { try { Thread.sleep(1000); runOnUiThread(new Runnable() { @Override public void run() { tv.setText("使用runOnUiThread更新UI"); } }); } catch (InterruptedException e) { e.printStackTrace(); } } } }4.AsyncTask
public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); new Asy().execute(); } class Asy extends AsyncTask<String,String,String>{ @Override protected String doInBackground(String... strings) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { tv.setText("使用AsyncTask更新UI"); } } }
相关文章推荐
- LeetCode:Top K Frequent Elements
- Android视图重绘,使用invalidate还是requestLayout
- codeforces_667C. Reberland Linguistics(dp+set)
- Maven项目报"Dynamic Web Module 3.0 requires Java 1.6 or newer."异常的处理办法
- StringBuilder的实现与技巧
- BluetoothAdapter.LeScanCallback
- NanUI for Winform发布,让Winform界面设计拥有无限可能
- StringBuffer 与StringBuilder 区别
- UE4:本地化弹出框
- PropertyValuesHolder实现机制
- ValueAnimator实现机制_源码分析
- window运行gradle build -- --stacktrace出现找不到文件framework-4.3.0.BUILD-SNAPSHOT-schema.zip异常
- hdu 1159Common Subsequence(dp 最大不连续的子序列)
- android Activity runOnUiThread() 方法使用
- UICollectionView-网格视图
- 02.LoT.UI 前后台通用框架分解系列之——灵活的菜单栏
- AdapterView.AdapterContextMenuInfo
- 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)
- complex类 序列化时 IsRequired = true 问题
- Android异步更新UI的四种方式