setImageResource()以编程方式运行到多个ImageView导致崩溃

时间:2018-04-14 15:54:25

标签: java android

我在XML文件中创建了15个ImageViews,我必须以编程方式设置它们的图像。

我尝试过这段代码:

imageView1.setImageResource(R.drawable.imageOne);

在我尝试使用所有15 ImageViews

之前,它工作正常
imageView1.setImageResource(R.drawable.imageOne);
...
imageView15.setImageResource(R.drawable.imageFifteen);

由于上面的代码,现在应用程序在尝试加载视图时崩溃了。我得到了这个奇怪的消息:I/Choreographer: Skipped 46 frames! The application may be doing too much work on its main thread.

2 个答案:

答案 0 :(得分:3)

我认为您使用的是滚动视图,不支持可重复使用的视图。如果要创建多个图像视图并设置图像,则应使用支持可重用视图的listview / RecyclerView等。试着阅读有关可重用性的内容。

您的应用程序也可能因为您正在加载需要更多内存的大图像而崩溃。阅读: https://developer.android.com/topic/performance/graphics/load-bitmap.html

答案 1 :(得分:0)

也许您将工作委托给MainThread,所以尝试以不同的方式进行。 如果可能,请使用多线程编程。使您的应用程序逻辑与UI分离非常有用。使用Java线程,AsyncTask或类似的东西。查看documentation