问题描述
当我打开我的应用程序并使用 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 (将#修改为@)