我通过 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中我有这样的东西(用iframe加载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" +
......
}
我的问题:每当我点击工具栏中的 Map 图标时, mNavController.navigate(R.id.action_global_mapFragment);
调用并且每次创建新的MapFragment,并且每次加载重量级的html数据 .
我怎么能缓存它?我无法在 onPause
中存储webview状态,因为每次都会重新创建片段 . 我可以设置 NavigationController
以避免这种情况吗?
或任何其他解决方案可能?
1 回答
Navigate方法总是创建一个新的fragment实例,你可以尝试使用web缓存: