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

时间:2015-12-11 12:35:15

标签: android android-fragments android-asynctask static

我在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完成并且设置了变量值时,简历上的片段才会调用这些方法。

0 个答案:

没有答案