com.example.package 中的 ANR,输入调度超时

问题描述

当我打开我的应用程序并使用 TimePicker 触摸屏幕选择时间时,出现错误

注意:在我的 MainActivity 中,我正在从 firebase 加载 Recyclerview 中的一些音频文件。这些歌曲的加载需要近 5 秒。这对我来说也是个问题

注意:仅当我在加载所有音频文件之前滚动 Timepicker 时才会发生此错误

error

01-01 08:16:35.899 50-65/system_process E/ActivityManager: ANR in com.example.alarm (com.example.alarm/.MainActivity)
    PID: 434
    Reason: Input dispatching timed out (Waiting because the touched window has not finished processing the input events that were prevIoUsly delivered to it.)
    Load: 0.0 / 0.0 / 0.0
    cpu usage from 0ms to 10699ms later:
      0% 11/debuggerd: 0% user + 0% kernel
    0% TOTAL: 0% user + 0% kernel
    cpu usage from 10076ms to 10584ms later:
    0% TOTAL: 0% user + 0% kernel

MainActivity.java` 文件

public class MainActivity extends AppCompatActivity {


    TimePicker timepickerwatch;
    TextView cancelalarm,AlarmSetterbtn;
    FirebaseStorage storage;
    RecyclerView recyclerview;
    Button upload_your_own;

    int almhour,almminute;

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        upload_your_own = findViewById(R.id.upload_your_own);
        timepickerwatch = findViewById(R.id.timepickerwatch);
        AlarmSetterbtn = findViewById(R.id.AlarmSetterbtn);
        cancelalarm = findViewById(R.id.cancelalarm);
        recyclerview = findViewById(R.id.recyclerview);
        storage = FirebaseStorage.getInstance();


        Calendar calendar = Calendar.getInstance();

        ArrayList<ringtoneModel> list = new ArrayList<>();
        ringtone_Adpter adpter = new ringtone_Adpter(list,MainActivity.this);

         new Methods().Firebase_RING_download(list,adpter); //this is a method in my Method class to Download and set audios in their model class

    recyclerView.setAdapter(adpter);
    recyclerView.setLayoutManager(new linearlayoutmanager(context));

        timepickerwatch.setonTimeChangedListener((view,hourOfDay,minute) -> {
            almhour = hourOfDay;
            almminute = minute;

            calendar.set(Calendar.HOUR_OF_DAY,almhour);
            calendar.set(Calendar.MINUTE,almminute);
            calendar.set(Calendar.SECOND,0);
        });

        AlarmSetterbtn.setonClickListener(v -> {AlarmStart(calendar);
            Toast.makeText(this,"Alarm Set Successfully",Toast.LENGTH_SHORT).show();
            Intent alarmchanged = new Intent("android.intent.action.ALARM_CHANGED");
            alarmchanged.putExtra("alarmset","enabled");
            MainActivity.this.sendbroadcast(alarmchanged);
        });

        cancelalarm.setonClickListener(v -> Alarmclose());
    }

to handle this I also tried

//created a new class which extends Thred 
class NewThread extends Thread{
    RecyclerView recyclerView;
    ArrayList<ringtoneModel> list;
    ringtone_Adpter adpter;
    Context context;

    public NewThread(RecyclerView recyclerView,ArrayList<ringtoneModel> list,ringtone_Adpter adpter,Context context) {
        this.recyclerView = recyclerView;
        this.list = list;
        this.adpter = adpter;
        this.context = context;
    }

    @Override
    public void run() {
        super.run();
        new Methods().Firebase_RING_download(list,adpter);
        recyclerView.setAdapter(adpter);
        recyclerView.setLayoutManager(new linearlayoutmanager(context));
        Log.d("tag","New Thread run working");
    }
}

并在 Mainactivity class

调用
NewThread newThread = new NewThread(recyclerview,list,adpter,MainActivity.this);
        newThread.start();

我做错了什么

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)