这不是关于能够在主/UI 线程中调用方法而是能够立即这样做的问题。
据我所知,由于 UI 响应要求,通常不允许您直接与 UI 线程交互。那么有一个系统来排队你对主线程的请求是有意义的,我们确实有这个系统,带有循环器、处理程序等。
这是我所做的:我在后台线程中执行了一些任务,并且我想在满足条件后立即关闭主线程(我为它创建了一个侦听器)并且我使用响应处理程序来发布它..类似于这个:
if(mNoOfPendingRequests >= mNoOfRequestsConsideredEnough){
mShouldFlagEnoughRequestsAtATime = true;
Log.i("ThumbnailDownloader: ","Enough Requests Queued");
//Now inform about this to PhotoGallery right now
mResponseHandler.postAtFrontOfQueue(new Runnable() {
public void run() {
mEnoughRequestsListener.onEnoughRequestsQueued(mShouldFlagEnoughRequestsAtATime);
}
});
}
else{
mShouldFlagEnoughRequestsAtATime = false;
mEnoughRequestsListener.onEnoughRequestsQueued(mShouldFlagEnoughRequestsAtATime);
}
如果我没有通知 PhotoGallery已经发送了足够多的请求,它将继续发送越来越多的请求,并且应用程序变得无响应。
此外,请求排队并稍后执行,导致请求过多。
因此,我的问题是:
有没有办法几乎瞬间从后台线程调用 UI 线程中的方法/通知?