相关疑难解决方法(0)

在FragmentPagerAdapter中阻止WebView重新加载?

我有一个FragmentPagerAdapter,用于显示大约6个选项卡,所有选项卡都从Web服务器加载数据.其中一个选项卡包含一个从我的服务器加载图像的WebView.生成映像的服务器端成本很高,因此我希望减少重新加载WebView的调用次数.对于非web视图选项卡,我已经能够拯救我的国家(对于那些,只是一个简单的数组),并恢复他们的标签得到刷卡通过.

问题:

  • 每次使用FragmentPagerAdapter重新滑动时,WebView都会重新加载,从而导致网络服务器上的重新加载时间和负载都很高.

考虑的解决方案:

  • 使用ViewPager.setOffscreenPageLimit() 这是有问题的,因为它会强制加载更多选项卡,即使它们永远不会被查看.这在我的服务器上是不必要的昂贵.
  • 使用WebView.saveState()WebView.restoreState() 文档已更新,以使其清除显示状态不再在此处维护,因此这对此方案不再有用.
  • 将我的活动设置为:android:configChanges ="keyboardHidden | orientation | screenSize"这适用于旋转的情况,但不影响ViewPager/FragmentPagerAdapter滑动标签的情况.

听起来像WebView.saveState()的旧行为本来就是完美的......

android android-webview android-fragments

9
推荐指数
1
解决办法
3534
查看次数

你如何防止片段 webview 每次都重新加载?

我是 Android 应用程序开发的新手,需要一些帮助。我注意到当我WebView使用导航选项卡尝试我的片段时,它们保持它们的状态很好,但是当我切换到使用导航抽屉时,每次我点击一个抽屉项目,然后点击我已经加载的抽屉项目回到那个抽屉项目,它只是重新加载WebView.

主要活动代码:

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    NavigationView navigationView = null;
    Toolbar toolbar = null;

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

        //Set the fragment initially
        MainFragment fragment = new MainFragment();
        android.support.v4.app.FragmentTransaction fragmentTransaction =
                getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.fragment_container, fragment);
        fragmentTransaction.commit();

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);


        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        navigationView = (NavigationView) findViewById(R.id.nav_view);

        //How to change elements in the …
Run Code Online (Sandbox Code Playgroud)

android android-webview android-fragments

5
推荐指数
1
解决办法
1406
查看次数