1
在我的應用程序中,我嘗試使用putSerializable方法在onSaveInstanceState中保存ArrayList狀態。並在onCreate和onRestoreInstanceState中恢復它。在我的應用程序中,如果沒有保存此對象的實例,它將從互聯網數據創建。但是我一直嘗試測試這個解決方案ArrayList開始從網絡下載。 任何人都可以幫助我嗎?無法在android中保存實例狀態
public class Activity extends SherlockActivity {
ListView listView;
SlidingMenu slidingMenu;
ArrayList<HashMap<String, String>> newsList = null;
String url = "/////here_my_url////";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setTitle(R.string.news_vatican);
listView = (ListView) findViewById(R.id.newslist);
slidingMenu = new SlidingMenu(this);
slidingMenu.setMode(SlidingMenu.LEFT);
slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
slidingMenu.setFadeDegree(0.35f);
slidingMenu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
slidingMenu.setMenu(R.layout.slidingmenu);
slidingMenu.setBehindOffset(150);
if (savedInstanceState != null){
newsList = (ArrayList<HashMap<String, String>>) savedInstanceState.getSerializable("list");
Log.e("Activity", "RESTORING");
} else {
Log.e("Activity", "PARSING NEW");
JSONParser parser = new JSONParser(this);
parser.execute(url);
try {
newsList = parser.get();
} catch (InterruptedException e) {
e.printStackTrace();
Log.e("Activity", "Failed to get newslist");
} catch (ExecutionException e) {
e.printStackTrace();
Log.e("Activity", "Failed to get newslist");
}
}
listView.setAdapter(new NewsAdapter(getApplicationContext(), newsList));
}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putSerializable("list", newsList);
super.onSaveInstanceState(savedInstanceState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
newsList = (ArrayList<HashMap<String, String>>) savedInstanceState.getSerializable("list");
}
恢復狀態和持久數據是有區別的。即使將設備從縱向旋轉到橫向(反之亦然),是否再次下載ArrayList? – Vikram
我只在我的應用程序中使用肖像方向android:configChanges =「orientation」 android:screenOrientation =「portrait」 – kostya17
那麼,在這種情況下,'onSaveInstanceState(Bundle)'對你來說是沒用的。您需要的是一種在後續啓動中保留數據的方法。我對麼? – Vikram