Java 如何每x秒更新一次textview?
我试图在文本视图中打印选择排序步骤,为此,我希望每5秒使用一次Java 如何每x秒更新一次textview?,java,android,multithreading,android-studio,timer,Java,Android,Multithreading,Android Studio,Timer,我试图在文本视图中打印选择排序步骤,为此,我希望每5秒使用一次steptext.append()方法 我期望结果与此相似 但它不起作用,我得到了这个I/编舞:跳过了1084帧!应用程序可能在其主线程上做了太多工作。 public class steps extends Fragment { private static final String ARG_PARAM1 = "inpuut"; private String minpuut; private OnFr
steptext.append()
方法
我期望结果与此相似
但它不起作用,我得到了这个I/编舞:跳过了1084帧!应用程序可能在其主线程上做了太多工作。
public class steps extends Fragment {
private static final String ARG_PARAM1 = "inpuut";
private String minpuut;
private OnFragmentInteractionListener mListener;
private TextView inputEntred ;
private TextView steptext ;
@Override
public void onResume() {
super.onResume();
String[] numberList = inputEntred.getText().toString().split(",");
final Integer[] numbers = new Integer[numberList.length];
for (int i = 0; i < numberList.length; i++) {
numbers[i] = Integer.parseInt(numberList[i]);
}
}
public static int Nswaps =0;
public String selectionSteps(Integer[] arr) throws InterruptedException {
System.out.println(Arrays.toString(arr));
int n = arr.length;
int Ccounter=0;
for (int i = 0; i < n-1; i++)
{
int min_idx = i;
for (int j = i+1; j < n; j++) {
Ccounter++;
steptext.append(" comparison "+Ccounter +" : comparing "+ arr[i]+" and "+ arr[j]+" \n");
Thread.sleep(5000);
if (arr[j] < arr[min_idx])
{
min_idx = j ;
steptext.append( "("+arr[j]+"<"+arr[i] +") TRUE , swap positions \n");
Thread.sleep(5000);
swap(arr,min_idx, i);
steptext.append(" swap : ");
steptext.append(Arrays.toString(arr)+"\n");
Thread.sleep(5000);
}
else
steptext.append( "("+arr[j]+"<"+ arr[i]+") FALSE , no swaping \n");;
Thread.sleep(5000);
}
swap(arr,min_idx, i);
}
System.out.println(Ccounter);
return null;
}
public static void swap(Integer[] a, int i, int j) {
int e = a[i];
a[i] = a[j];
a[j] = e;
Nswaps++ ;
}
}
公共类步骤扩展片段{
私有静态最终字符串ARG_PARAM1=“inpuut”;
私有字符串minpuut;
私有OnFragmentInteractionListener mListener;
私有文本视图输入;
私有文本查看步骤文本;
@凌驾
恢复时公开作废(){
super.onResume();
字符串[]numberList=inpunterId.getText().toString().split(“,”);
最终整数[]数字=新整数[numberList.length];
for(int i=0;i steptext.append(“(“+arr[j]+”您是否搜索了该问题
你不应该在android UI线程中使用Thread.sleep。如果有一些繁重的工作要运行,请在另一个线程上执行主题,当他们完成时,调用UI线程并更新TextView
在您的情况下,您可以使用以下内容:
Handler handler = new Handler();
updater = new Runnable() {
@Override
public void run() {
// Do one step of sorting here
steptext.append("Your swaps steps");
handler.postDelayed(updater,5000);
}
};
handler.post(updater);
您可以使用另一种方法看起来您正在从主线程调用Thread.sleep()
,这将解释您收到的警告/错误消息。您应该将工作卸载到另一个线程,然后只从主线程更新TextView。