Android 保留片段:异步任务和屏幕旋转
我的应用程序中保留了一个片段,可以从Web服务下载一些数据,并在listview中显示结果。这是我对oncreate和oncreate视图的实现Android 保留片段:异步任务和屏幕旋转,android,android-fragments,android-asynctask,screen-rotation,Android,Android Fragments,Android Asynctask,Screen Rotation,我的应用程序中保留了一个片段,可以从Web服务下载一些数据,并在listview中显示结果。这是我对oncreate和oncreate视图的实现 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //retain fragment for configuration change setRetainInstance(true); }
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//retain fragment for configuration change
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (savedInstanceState == null) {
// i'm here when fragment is created first time
view = inflater.inflate(R.layout.fragment, container, false);
// call a private method for init my widgets
setWidgets(view);
//call here asynctask for download data
} else {
// i'm here after a configuration change, just update views
String myData = MyApp.getStoredData().toString();
// update my widget with previous stored data
}
}
MyApp是我的类,它扩展了应用程序,并保留asynctask下载的数据。
现在,如果我在AsyncTask完成时旋转设备,一切都正常,但如果我在AsyncTask尚未完成时旋转设备,则在调用MyApp.getStoredData().toString()时会获得一个nullpointer异常(我在null对象上调用toString)
如何修复它?在
MyApp.getStoredData().toString()
方法中,您可以异步执行任务,但此方法将立即返回。MyApp.getStoredData().toString();您还应该在我的应用程序异步任务中发布代码,这样就可以告诉您最佳解决方案。@Khemraj异步任务从Web服务下载并解析一些数据,并将结果存储在getStoredData()应返回的对象中