handler和runOnUiThred()方法更新。直接使用Thread异步线程不能更新view。
public class ReadActivity extends AppCompatActivity {
private TextView show_txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read);
setShow_txt();
}
private void setTitle(){
new Common_title(this).setTitle(file_name)
.getBack().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
//读取文件内容
private void setShow_txt(){
new Thread(new Runnable() {
@Override
public void run() {
try {
File file = new File(file_name);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader bfr = new BufferedReader(isr);
String line;
StringBuilder respnse = new StringBuilder();
while ((line = bfr.readLine()) != null){
//读取数据
respnse.append(line+"\n");
//Log.i("line",line);
}
bfr.close();
isr.close();
fis.close();
//runOnUiThread更新UI
updateUI(respnse.toString());
//Hanlder更新UI
Message message = new Message();
message.what = 1;
Bundle bundle = new Bundle();
bundle.putString("key",respnse.toString());
message.setData(bundle);
handler.sendMessage(message);
//Hanlder.post更新UI
handerUpdataUI(respnse.toString());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
//子线程更新UI 方法1
private void updateUI(final String resonse){
runOnUiThread(new Runnable() {
@Override
public void run() {
show_txt.setText(resonse);
}
});
}
//子线程更新UI 方法2
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 1:
//处理信息
show_txt.setText(msg.getData().getString("key"));
break;
}
}
};
//子线程更新UI 方法3
private void handerUpdataUI(final String resonse){
handler.post(new Runnable() {
@Override
public void run() {
show_txt.setText(resonse);
}
});
//延迟更新
//handler.postDelayed()
//定时更新
//handler.postAtTime()
}
}