我在asynctask的MainActivity中将值设置为自定义类型CustomData的静态变量。这是一个密集型操作,它会下载json并在此对象中设置其值。以下是我在MainActivity中设置它的方法
public class MainActivity extends BaseActivity {
private static CustomData paper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = (LayoutInflater) this
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View contentView = inflater.inflate(R.layout.activity_main, null, false);
new Loadpaper().execute(this);
}
public class Loadpaper extends AsyncTask<Activity, Void, String> {
@Override
protected void onPreExecute()
{
}
@Override
protected String doInBackground(Activity... params) {
paper = getNewsPaper(params[0]);
return "success";
}
@Override
protected void onPostExecute(String result){
setpagecount();
return ;
}
public CustomData getpaperdata() {
return paper;
}
}
现在在这个活动的子片段中,我通过调用onAttach中的getpaperdata和片段的onResume来使用这个静态变量。
paper = ((MainActivity) myActivity).getpaperdata();
它在通常情况下工作正常,甚至可以在应用程序暂停(但不会被销毁)时起作用。但经过一段时间的闲置,如果我尝试恢复应用程序。系统尝试按原样重新加载屏幕,但变量纸现在为空,因此应用程序崩溃。
我读到了这个并且也进行了一些调试并且知道它正在发生,因为当活动被杀死时静态变量将变为null。我如何修复它,使得只有当主要活动的asynctask完成并且设置了变量值时,简历上的片段才会调用这些方法。