2014-11-01 105 views
0

我在我使用Parse SDK的Activity中收到此错误。整个代码是here,但代码是巨大的,崩溃甚至没有给我在哪里发生的代码行。我搜查了很多,但没有发现这个错误。谁能告诉我这个错误究竟意味着什么?致命例外:ParseRequest.NETWORK_EXECUTOR-thread-60

截图:enter image description here

+0

我注意到你在AsyncTask里面查询,认为这可能会伤害到线程管理。 – cYrixmorten 2014-11-01 11:07:22

+0

@cYrixmorten但是为什么?我在后台线程中查询。 – berserk 2014-11-01 11:08:20

+0

我担心的是,如果你错误地解雇了任何一次AsyncTask的两次。只要知道我曾经将一些对象固定在一个同步方法中,这足以使它无限地随机挂起。此外,他们提供了很好的queryInBackground方法,现在也支持Bolt,所以没有理由尝试和强制AsyncTask?这并不是说我确信这是错误的原因,只是一个强烈的怀疑。 – cYrixmorten 2014-11-01 11:14:00

回答

1

由于加入了代码示例,我会写一个答案。

您正在使用AsyncTask来执行多个查询并了解这些查询何时完成。

解析最近添加了螺栓他们的API(1.7.0或1.7.1)https://github.com/BoltsFramework/Bolts-Android

用螺栓,你可以做同样的,你可以在JavaScript中承诺,如果你是熟悉。

一个简单的例子删除匹配查询的所有对象:

findAsync(query).continueWithTask(new Continuation<List<ParseObject>, Task<Void>>() { 
    public Task<Void> then(Task<List<ParseObject>> results) throws Exception { 
    // Collect one task for each delete into an array. 
    ArrayList<Task<Void>> tasks = new ArrayList<Task<Void>>(); 
    for (ParseObject result : results) { 
     // Start this delete immediately and add its task to the list. 
     tasks.add(deleteAsync(result)); 
    } 
    // Return a new task that will be marked as completed when all of the deletes are 
    // finished. 
    return Task.whenAll(tasks); 
    } 
}).onSuccess(new Continuation<Void, Void>() { 
    public Void then(Task<Void> ignored) throws Exception { 
    // Every comment was deleted. 
    return null; 
    } 
}); 

return Task.whenAll(tasks);收益将触发onSuccess只有当tasks数组列表中的所有任务已完成的任务。

这不仅依赖于Parse自己的后台管理,这个例子也让所有任务并行运行,所以通常更快。

在你的情况,你会简单的需要创建一个普通的方法是:

  • 使用新的内置函数返回一个任务都query1query2
  • 那些加入的ArrayList任务
  • 回报Task.whenAll(任务)

比方说这个方法是loadPicsInBg,然后使用它:

loadPicsInBg().onSuccess(new Continuation<Void, Void>() { 
    public Void then(Task<Void> ignored) throws Exception { 
    // all the queries completed 
    return null; 
    } 
}); 

我知道这是一个巨大的重构,也许你可以用更简单的回调方法做得很好,但如果使用正确的话,Bolt确实会给复杂查询带来更多的能力。此外,它避免了嵌套查询在代码中创建不断增加的缩进的问题,使其难以阅读。

+0

谢谢!问题是loadPicsInBg()。每当我重新开始活动时,我猜测线程正在增加。最后在4-5重新开始活动后,它坠毁了。 – berserk 2014-11-01 12:12:34

+0

有一种感觉,它有什么关系:)高兴我可以帮忙 – cYrixmorten 2014-11-01 12:18:36