我有一个按钮,当我点击它时,我将textView.setText()
设为一个非常大的文本,50000个符号,并且界面停止3秒,我该如何解决?
我试图制作textview.append()
,但它也没有帮助。
MainActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
textText.append(rowItemHeader.getText().substring((endOfNews - 10000, endOfNews));
}
});
编辑1无结果
private class MyTask extends AsyncTask <Void, Void, String> {
String str;
TextView txt;
MyTask(String str, TextView txt){
this.str = str;
this.txt = txt;
}
public String doInBackground(Void... args) {
return str.substring(endOfNews - 10000, endOfNews);
}
public void onPostExecute(String myString) {
// do your update here or you will get that error (the original thread one)
txt.append(myString);
}
}
答案 0 :(得分:0)
你是如何宣布这个帖子的? 你应该使用类似的东西:
this.runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Log.e("TAG synchronize", "synchronize");
}
});
答案 1 :(得分:0)
使用AsyncTask
,它们就是您想要的。它们是一个辅助线程,易于设置并从主线程执行。
使用appends
使用TextView
runOnUiThread(new Runnable(...)...)
生成文本的Thread.sleep(50)
部分的线程中使用循环,并调用{{1}}强制线程休眠那么多毫秒防止滞后。
答案 2 :(得分:0)
使用AyncTask,例如:
private class MyTask extends AsyncTask<Void, Void, String> {
private Context context;
public MyTask(Context context) {
this.context = context;
}
public String doInBackground(Void... args) {
// do your job here
return myString;
}
public void onPostExecute(String myString) {
// do your update here or you will get that error (the original thread one)
((TextView)context.findViewById(R.id.textview)).setText(myString);
}
}
然后在您的活动中
new MyTask(MyActivity.this).execute();
答案 3 :(得分:0)
首先,删除视图,然后在后台线程上添加文本,然后再添加视图。如果您需要一些示例代码,请告诉我。