Я делаю навигацию в моем приложении через 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 у меня есть что-то вродеthis (загрузить HTML с iframes):
@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-данные.
Как мне его кешировать?Я не могу сохранить состояние веб-просмотра в onPause
, потому что фрагмент воссоздается каждый раз.Могу ли я настроить NavigationController
, чтобы избежать этого?
Или возможно другое решение?