我在调用SparseArray
方法时遇到size()
问题,特别是如果我刚刚添加了一些元素,它也会返回0。这是我第一次遇到这种(显然是愚蠢的)问题。
我使用AsyncTask的doInBackground
方法:
SparseArray<MyPojoClass> myArray = new SparseArray<>();
// some HttpURLConnection stuffs
// ...
while (/*...reading from the urlConnection's input stream ...*/) {
MyPojoClass myObject = new MyPojoClass(something);
myArray.put(atag, myObject);
}
// close the urlConnection
// ...
// THE PROBLEM!
if (myArray.size() == 0)
return null;
return myArray;
这大约是doInBackground
的重要部分。我注意到,如果我在尺寸检查上设置断点,它总是返回正确的尺寸,应用程序完美无缺;如果我让应用程序没有断点,它有时会在检查中失败。
我没有发现与SparseArray
类相关的其他问题。在你问它之前,没有其他人(其他线程)写或读相同的SparseArray。创建和处理它的线程是次要线程,但这不应该是问题。