我遇到了一个奇怪的问题......我的应用程序是为了在一个单独的线程上做一些 web 服务调用。一旦网络服务调用完成,它会将用户导航到不同的活动。在用户按下主页按钮或退出当前活动的情况下,如果 web 服务调用线程仍在运行,它应该终止 web 服务。因此,我将线程终止方法置于 OnPause 状态。
这是在线程内运行的方法块:
private Thread _webserviceThread;
void WebserviceCallThread(){
WebRestult result= WebserviceCall();
if(!result.containsError()){
RunOnUIThread(delegate{
transitionToActivityXYZ();
});
}
}
void RunThreadAction(){
_webserviceThread = new Thread(new ThreadStart(WebserviceCallThread));
_webserviceThread.Start();
}
protected override void OnPause(){
if(_webserviceThread != null && _webserviceThread.IsAlive){
_webserviceThread.Abort();
}
}
在 web 服务调用完成并开始转换到另一个页面后,它进入 OnPause 状态。然而,在一些奇怪的情况下,它会认为线程没有在 OnPause 状态下完成,即使活动转换是方法的最后一行。
有没有人遇到过这个问题?如果是这样,你是如何解决这个问题的?
谢谢!