我正在使用sendOrderedBroadcast来收集一些数据。 在resultReceiver中我解析了这个数据,但是这个操作可能需要几秒钟。
现在sendOrderedBroadcast有这个“Handler scheduler”参数,这似乎是我需要的,但不幸的是我真的不知道如何使用它。我需要的是在不同的线程上处理resultReceiver。怎么做?
编辑: 重新解决问题:在广播接收器中,我需要解析大量数据,构造View对象并将它们添加到ArrayList。这会阻止用户界面。如何在不阻止UI的情况下执行此操作? ...我可以创建新线程,但我无法从那里创建View对象......
答案 0 :(得分:0)
看起来你不得不审查你的设计。
无论如何,视图对象的构造需要在UI上完成。在那里完成繁重的工作量取决于您如何设计在视图构造中可用的数据。
当您收到结果时,您可以生成AsyncTask
来解析数据。从中返回另一个对象列表,这可能是一个精简版本(DTO),它将具有创建视图对象所需的属性。不要在getter中编写解析逻辑。保持简单。它将有助于减少阻止UI的时间。