Android 如何知道片段是否已被重新创建
我需要在ListFragment中显示一些数据。我使用AsyncTask从internet下载数据,然后使用适配器更新数据Android 如何知道片段是否已被重新创建,android,Android,我需要在ListFragment中显示一些数据。我使用AsyncTask从internet下载数据,然后使用适配器更新数据 public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); activity = getActivity(); context = activity.getApplicationContext();
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
activity = getActivity();
context = activity.getApplicationContext();
res = activity.getResources();
resFactory = createFactory(context);
dataFolder = resFactory.getDataFolder();
dataFile = resFactory.getDataFile();
ArrayList list = resFactory.getArrayList();
setListAdapter(resFactory.getAdapter(context, list));
linkToData = resFactory.getDataLink(res);
getData();
}
在getData
中,我正在启动AsyncTask
我希望getData
在一个用户会话中只执行一次。所以,若片段被分离,然后再次连接,我不想再次下载数据。但若这个片段是刚刚创建的,我想让它下载数据
对此的简单答案是从onCreate()
调用getData
,但是我得到了null指针,因为此时我没有AsyncTask
。所以我需要知道这个片段是刚刚被创造出来的,还是刚刚被分离,然后再次连接
英语不是我的母语。如果我的问题不太容易理解,我很抱歉
package com.example.gridview;
import android.os.Bundle;
import android.support.v4.app.Fragment;
/**
* @author rajeshcp
*/
public class FrgamentX extends Fragment {
private boolean mIsCreated;
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
if(!mIsCreated)
{
mIsCreated = true;
//load data
}
}
}
这也是可行的。加载数据后,将其作为静态集合保存在其他类中,当您到达该片段时,首先检查数据是否存在,否则只需加载它。我的数据保存在文件(xml、json和jpeg缩略图)中。如果我只是检查这个文件是否存在,那么当我的应用程序被多次启动时,它不会更新数据,因为文件会存在。如果可能的话,我希望我的应用程序在每次发布时都能更新数据。所以它不是我问题的解决方案,也不是我问题的解决方案,因为它存储的数据在用户会话之间。所以,当应用程序第二次启动时,数据将以xml、json和jpeg文件的形式存在,并且不会被更新。