我在我的应用程序中通过
Navigation Architecture Component
https://developer.android.com/topic/libraries/architecture/navigation/
我有一个
MainActivity
在里面交换碎片。
public class MainActivity extends AppCompatActivity {
NavController mNavController;
@Override
protected void onCreate(Bundle savedInstanceState) {
.....
Navigation.findNavController(this, R.id.my_nav_host_fragment);
.....
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.map: {
mNavController.navigate(R.id.action_global_mapFragment);
break;
}
}
return super.onOptionsItemSelected(item);
}
}
在MapFragment中,我有类似的东西(用iframes加载HTML):
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
......
mWvMap.setWebChromeClient(new WebChromeClient());
....
mWvMap.loadData("<html>\n" +
"<head>\n" +
"</head>\n" +
"<body style=\"margin: 0\">\n" +
......
}
我的问题是:每次当我点击工具栏中的地图图标时,
mNavController.navigate(R.id.action_global_mapFragment);
调用,每次创建新的MapFragment,每次加载重量级HTML数据。
我怎样才能缓存它?
我无法将webview状态存储在
onPause
,因为片段每次都重新创建。
我可以安装吗?
NavigationController
为了避免这个?
或者其他可能的解决方案?