当应用程序空闲(被android系统杀死)后恢复时,在片段中找不到活动中设置的静态变量,导致应用程序崩溃

当应用程序空闲(被android系统杀死)后恢复时,在片段中找不到活动中设置的静态变量,导致应用程序崩溃,android,android-fragments,android-asynctask,static,Android,Android Fragments,Android Asynctask,Static,我在异步任务的MainActivity中将该值设置为自定义类型CustomData的静态变量。这是一个密集的操作,用于下载json并在此对象中设置其值。以下是我在MainActivity中设置它的方式 public class MainActivity extends BaseActivity { private static CustomData paper; @Override protected void onCreate(Bundle savedInstanceState) {

我在异步任务的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;
}
}
在通常情况下,它可以正常工作,甚至在应用程序暂停(但未销毁)时也可以正常工作。但在空闲一段时间后,如果我尝试恢复应用程序。系统尝试按原样重新加载屏幕,但变量paper现在为空,因此应用程序崩溃


我读过这篇文章,还做了一些调试,知道当活动终止时,静态变量将变为null,这就发生了。如何修复它,使resume上的片段仅在主活动的asynctask完成并且设置了变量值时才调用这些方法

让片段实现接口
接口A{done();}
。。。让活动在B的实现中实现
接口B{registerA(aa);unregisterA(aa);}
使用
arraylistregisterdas。。。现在在
onPostExecute
中迭代
registerdAs
并调用
done()。。。并在片段do
((B)getActivity)的附件中注册(this)
并在
附件中注销它。。。当然这是基本的想法。。。如果异步任务在注册之前完成,您还应该在
register
方法中调用
A.done()
。。。下一步是。。。将
done()
更改为
done(CustomData数据)
let Fragment实现接口
接口A{done();}
。。。让活动在B的实现中实现
接口B{registerA(aa);unregisterA(aa);}
使用
arraylistregisterdas。。。现在在
onPostExecute
中迭代
registerdAs
并调用
done()。。。并在片段do
((B)getActivity)的附件中注册(this)
并在
附件中注销它。。。当然这是基本的想法。。。如果异步任务在注册之前完成,您还应该在
register
方法中调用
A.done()
。。。下一步是。。。将
done()
更改为
done(自定义数据)
paper = ((MainActivity) myActivity).getpaperdata();