错误说 - " API的使用记录为@since 1.8 + .."。
应用程序在sdk 24上正常运行,但是当我在minSDK-19上运行它时,它只是在该错误行上崩溃,其中PriorityQueue已初始化。我检查了类PriorityQueue - 在API级别1上添加了。那么问题出在哪里?
问:如何解决?
答案 0 :(得分:4)
在API 24中添加了PriorityQueue (Comparator comparator),因此它不能与旧版本向后兼容(minsdk应为24) 可以使用summary下提到的除此之外的任何其他版本的构造函数。
虽然最接近当前使用的是初始容量
PriorityQueue (int initialCapacity, Comparator comparator)
其他解决方案是 您可以对当前的API进行检查,如
PriorityQueue<Cell> pq;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Nougat) {
pq = new PriorityQueue(new CellComparator());
}else{
pq = new PriorityQueue(50/*initial capacity*/,new CellComparator());
}
其中initial capacity
表示:PQ内部使用默认容量为11
的数组,因此如果您事先了解了元素数量,那么最好定义队列数组的初始容量,因为它可以防止在运行时重新创建更大的数组和复制数组元素
答案 1 :(得分:2)