Использование кэширования в Android WebView - PullRequest
0 голосов
/ 26 мая 2018

Я искал несколько дней хорошее решение для кэширования для моего приложения WebView.Решения, которые я нахожу, похоже, не работают для меня.Мне, как новичку в создании приложений, так и изменениям в кэшировании, которые устарели во многих старых решениях, кажется, мешает мне.

По сути, у меня есть большой WebView с рядом кнопок на нижней панели навигации, меняющих URLвеб-просмотра.Я хотел бы, чтобы страницы, которые уже были загружены ранее, загружались из кэша.Это должно быть поведение WebView по умолчанию, но, похоже, оно не загружается быстрее (должно быть почти мгновенно, верно?).Я также хотел бы, чтобы WebView загружался из кэша, если сеть недоступна.

Это фрагмент кода, который у меня есть до сих пор с удаленными моими предыдущими попытками кэширования.

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
    navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

    my_web_view = (WebView)findViewById(R.id.web_view); //grab a handle on the web wrapper

    //set all of our variables for use later
    home_URL = "https://akvcoc.com/app-home";
    events_URL = "https://akvcoc.com/app-events";
    directory_URL = "https://akvcoc.ctrn.co/directory/index.php";

    my_web_view.loadUrl(home_URL);                    //set the web wrapper to the home page

    my_web_view.getSettings().setJavaScriptEnabled(true);              //and set javascript to true

}

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener()
{

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.navigation_home:
                my_web_view.loadUrl(home_URL);
                return true;
            case R.id.navigation_events:
                my_web_view.loadUrl(events_URL);
                return true;
            case R.id.navigation_directory:
                my_web_view.loadUrl(directory_URL);
                return true;
        }
        return false;
    }
};

1 Ответ

0 голосов
/ 26 мая 2018

Вы добавляете эту строку для загрузки javascript в webview.

my_web_view.getSettings().setDomStorageEnabled(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...