我在Android应用中使用Loaders从网络中检索数据。在我的onCreate()方法中,我初始化加载器。检索数据后,我可以在onLoadFinished()方法中访问它们。这很好。
我试图添加超时,以便如果请求超过15秒,我会破坏加载程序并重新启动它。我使用以下方法来实现这一目标:
private void timeOutTimer()
{
final Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
myHandler.post(recreateLoader);
t.cancel();
}
}, 15000);
}
final Runnable recreateLoader = new Runnable() {
public void run() {
if(getLoaderManager().getLoader(MY_LOADER) != null || getLoaderManager().getLoader(MY_LOADER) != null)
{
Toast.makeText(getApplicationContext(),"Reconnecting..",Toast.LENGTH_SHORT).show();
getLoaderManager().destroyLoader(MY_LOADER);
ReInitiateLoader();
}
}
}
};
问题是onLoadFinished永远不会被调用。似乎在线程中启动Loader并不起作用。有解决方案吗?