有很多Android SDK API可以注册回调处理程序。以MediaPlayer为例,可以设置onCompletionListener回调函数。这些回调将从主(UI)线程调用吗?如果答案是“取决于情况”,那么我正在寻找一些常规规则,以确定哪些回调将从主线程调用而不是从其他线程调用。SDK文档似乎没有明确说明。(也许我错过了。)
这似乎很重要,因为如果我能保证主线程的回调,那么我可以跳过某些数据同步,在代码中不同位置共享的数据上。如果出于无知而被迫持悲观态度,那么我必须编写额外的同步块代码,并担心死锁、数据完整性和降低性能。