您的位置:首页 > 产品设计 > UI/UE

Android基础之UI更新的四种方式

2016-05-19 10:01 232 查看
1.hanler

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");
}
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: