如何在android中的webview中快速渲染网页

时间:2016-03-22 06:41:58

标签: android webview

我正在使用webview开发android应用程序,但网页在webview中加载的时间更长,有没有办法在Web视图中加载网页。

提前致谢

1 个答案:

答案 0 :(得分:1)

Google已创建Chrome Custom Tabs,您可以使用与应用程序相同的主题样式启动原生Chrome应用程序,以使其显示为嵌入式。

除此之外,自定义标签提供了预热网页的选项,实质上是预取和预渲染网页。谷歌称,使用自定义标签页几乎可以立即打开网页。

也就是说,只有当用户点击然后启动浏览器的链接时,这才有用。如果您想要更快地加载真正的嵌入式webview,这将无济于事。

修改

我发现该网站上提供的示例应用程序有点过于复杂。我将在下面介绍一个简短的实现。这不支持所有可能的情况,但应该足够起点。

摇篮:

dependencies {
    compile 'com.android.support:customtabs:23.0.0+'
}

的活动:

public class MainActivity extends AppCompatActivity {

    public static final String CUSTOM_TAB_PACKAGE_NAME = "com.android.chrome";

    CustomTabsClient mClient;
    CustomTabsSession mCustomTabsSession;
    CustomTabsServiceConnection mCustomTabsServiceConnection;
    CustomTabsIntent customTabsIntent;

    static final String URL = "https://www.google.co.za/search?q=test";


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

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        /*
            Setup Chrome Custom Tabs
         */
        mCustomTabsServiceConnection = new CustomTabsServiceConnection() {
            @Override
            public void onCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient customTabsClient) {

                //Pre-warming
                mClient = customTabsClient;
                mClient.warmup(0L);
                //Initialize a session as soon as possible.
                mCustomTabsSession = mClient.newSession(null);
            }

            @Override
            public void onServiceDisconnected(ComponentName name) {
                mClient = null;
            }
        };

        CustomTabsClient.bindCustomTabsService(MainActivity.this, CUSTOM_TAB_PACKAGE_NAME, mCustomTabsServiceConnection);

        customTabsIntent = new CustomTabsIntent.Builder(mCustomTabsSession)
                .setToolbarColor(ContextCompat.getColor(this, R.color.colorPrimary))
                .setShowTitle(true)
                .build();
        /*
            End custom tabs setup
         */

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                // Launch Chrome Custom Tabs on click
                customTabsIntent.launchUrl(MainActivity.this, Uri.parse(URL));
            }
        });
    }
}