互联网不可用时,不会显示来自parse.com的数据(缓存可用)

时间:2014-02-14 09:06:52

标签: android caching nullpointerexception parse-platform

过去几天我一直在努力解决这个问题。我在parse.com上从一个类中获取数据。当互联网连接可用时,数据被取出并正确显示但是当它没有时,它不会显示缓存的数据并且应用程序崩溃。是的,我首先使用互联网连接运行应用程序,因此结果将被缓存。这就是我获取数据的方式:

    worldpopulationlist = new ArrayList<BulletinItem>();
    query.orderByDescending("createdAt");
    query.setCachePolicy(ParseQuery.CachePolicy.NETWORK_ELSE_CACHE);
    query.findInBackground(new FindCallback<ParseObject>() {
        @Override
        public void done(List<ParseObject> postList, ParseException e) {
            if (e == null) {
             worldpopulationlist.clear();
            for (ParseObject news : postList) {
                 ParseFile image = (ParseFile) news.get("thumbnail");
                    BulletinItem map = new BulletinItem();
                    map.setthumbnail(image.getUrl());
                    map.setpostedBy((String) news.get("postedBy"));
                    // other stuff
                    worldpopulationlist.add(map);
              }
            mAdapter.notifyDataSetChanged();
            }
        }
    });

在这里,我检查在应用仍然连接到互联网时是否有可用的缓存结果,这总是返回true。

boolean isCached = query.hasCachedResult();
if (isCached == true) Toast.makeText(getActivity(), "cache is available", Toast.LENGTH_SHORT).show();

当没有可用的互联网时,这是来自解析sdk的NPE跟踪:

E/AndroidRuntime(21769): Caused by: java.lang.NullPointerException
E/AndroidRuntime(21769):    at com.parse.ParseQuery$15.then(ParseQuery.java:763)
E/AndroidRuntime(21769):    at com.parse.ParseQuery$15.then(ParseQuery.java:1)
E/AndroidRuntime(21769):    at com.parse.Task$10.run(Task.java:442)
E/AndroidRuntime(21769):    at com.parse.Task$1.execute(Task.java:67)
E/AndroidRuntime(21769):    at com.parse.Task$6.then(Task.java:309)

0 个答案:

没有答案