Reputation: 1
Well I am trying to create an app but it is giving me an error: Accessibility content change on non-UI thread. Future Android versions will throw an exception.
My java code:
package com.tools.cpuusage;
import androidx.appcompat.app.AppCompatActivity;
//import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
}
public void refresh(View view) {
ProgressBar p1 = findViewById(R.id.progressBar1);
ProgressBar p2 = findViewById(R.id.progressBar2);
ProgressBar p3 = findViewById(R.id.progressBar3);
ProgressBar p4 = findViewById(R.id.progressBar4);
ProgressBar p5 = findViewById(R.id.progressBar5);
ProgressBar p6 = findViewById(R.id.progressBar6);
ProgressBar p7 = findViewById(R.id.progressBar7);
ProgressBar p8 = findViewById(R.id.progressBar8);
ProgressBar p9 = findViewById(R.id.progressBar9);
ProgressBar p10 = findViewById(R.id.progressBar10);
ProgressBar p11 = findViewById(R.id.progressBar11);
ProgressBar p12 = findViewById(R.id.progressBar12);
int accuracy = 100;
for (int c = 0; c < 12; c++) {
int finalC = c;
MainActivity2.this.runOnUiThread(() -> {
int memory = (int) ((double) accuracy * (double) ((double) ((Runtime.getRuntime().freeMemory() / 1024) / 1024) / (double) ((Runtime.getRuntime().totalMemory() / 1024) / 1024)));
if (finalC == 0) {
p1.setProgress(0);
} else if (finalC == 1) {
p2.setProgress(78);
} else if (finalC == 2) {
p3.setProgress(78);
} else if (finalC == 3) {
p4.setProgress(78);
} else if (finalC == 4) {
p5.setProgress(memory);
} else if (finalC == 5) {
p6.setProgress(memory);
} else if (finalC == 6) {
p7.setProgress(memory);
} else if (finalC == 7) {
p8.setProgress(memory);
} else if (finalC == 8) {
p9.setProgress(memory);
} else if (finalC == 9) {
p10.setProgress(memory);
} else if (finalC == 10) {
p11.setProgress(memory);
} else {
p12.setProgress(memory);
}
try {
Thread.sleep(5000);
} catch (InterruptedException ignore) {}
});
}
}
}
And my xml code:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2">
<ProgressBar
android:id="@+id/progressBar1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="50"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintBottom_toTopOf="@id/progressBar2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/progressBar2"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintBottom_toTopOf="@id/progressBar3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/progressBar3"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintBottom_toTopOf="@id/progressBar4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/progressBar4"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintBottom_toTopOf="@id/progressBar5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/progressBar5"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintBottom_toTopOf="@id/progressBar6"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/progressBar6"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintBottom_toTopOf="@id/progressBar7"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<ProgressBar
android:id="@+id/progressBar7"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/progressBar8"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progressBar7" />
<ProgressBar
android:id="@+id/progressBar9"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progressBar8" />
<ProgressBar
android:id="@+id/progressBar10"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progressBar9" />
<ProgressBar
android:id="@+id/progressBar11"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progressBar10" />
<ProgressBar
android:id="@+id/progressBar12"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="369dp"
android:layout_height="55dp"
android:progress="00"
android:progressDrawable="@drawable/progress_bar_style"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/progressBar11" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Refresh"
android:onClick="refresh"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/progressBar12"
tools:ignore="HardcodedText,OnClick" />
</androidx.constraintlayout.widget.ConstraintLayout>
I inserted runnUIThread()
in my code expecting it to be executing without the error and not crashing, but it is still giving errors and crashing.
Please help me fix them
Upvotes: 0
Views: 107
Reputation: 658
It would be helpful if you provided more information about the actual crash, maybe the Exception thrown by the system.
I would say, remove the call to sleep: Thread.sleep(5000);
.
Since this runs on the main thread, this is blocking your app causing an ANR (Application Not Responding).
You need to be mindful about what is executed on what thread. Blocking the main thread on Android is a bad idea ;) .
Upvotes: 0