Android WebView LoadUrl过程
来源:互联网 发布:faking it 编辑:程序博客网 时间:2024/06/05 08:31
请从文章最后往前看
这个过程只包含从java层调用到C++层的代码,至于如何获取到网络数据并加载到页面上并没有涉及。
本文只记录了loadurl的过程,源码基于android 4.2.2
#0 MessageLoop::PostTask
#1android::WebUrlLoaderClient::start
#2 android::WebUrlLoader::start
#3 WebCore::ResourceLoaderAndroid::start
#4 WebCore::ResourceHandle::start
#5 WebCore::ResourceHandle::create
#6WebCore::MainResourceLoader::loadNow
#7WebCore::MainResourceLoader::load
#8 WebCore::DocumentLoader::startLoadingMainResource
#9 WebCore::FrameLoader::continueLoadAfterWillSubmitForm
#10 WebCore::FrameLoader::continueLoadAfterNavigationPolicy
#11 WebCore::FrameLoader::callContinueLoadAfterNavigationPolicy
#12 WebCore::PolicyCallback::call
#13 WebCore::PolicyChecker::continueAfterNavigationPolicy
#14 android::FrameLoaderClientAndroid::dispatchDecidePolicyForNavigationAction
#15 WebCore::PolicyChecker::checkNavigationPolicy
#16 WebCore::FrameLoader::loadWithDocumentLoader
#17 WebCore::FrameLoader::load
#18 WebCore::FrameLoader::load
#19WebCore::FrameLoader::load
/external/webkit/Source/WebKit/android/jni/WebCoreFrameBridge.cpp
通过static JNINativeMethod gBrowserFrameNativeMethods映射java native方法为c++方法
{ "nativeLoadUrl", "(Ljava/lang/String;Ljava/util/Map;)V",
(void*) LoadUrl },
LoadUrl(JNIEnv *env, jobject obj, jstring url, jobject headers)
WebCore::Frame* pFrame = GET_NATIVE_FRAME(env, obj);
WebCore::Frame是external/webkit/Source/WebCore/page/Frame.cpp
WTF::String webcoreUrl = jstringToWtfString(env, url);
WebCore::KURL kurl(WebCore::KURL(), webcoreUrl);
WebCore::ResourceRequest request(kurl);
pFrame->loader()->load(request, false);
pFrame->loader()返回 &m_loader
类型是FrameLoader,路径
external/webkit/Source/WebCore/loader/FrameLoader.cpp
load(const ResourceRequest& request, bool lockHistory)
load(const ResourceRequest& request, const SubstituteData& substituteData, bool lockHistory)
load(DocumentLoader* newDocumentLoader)
loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType type, PassRefPtr<FormState> prpFormState)
BrowserFrame.java
loadUrl(String url, Map<String, String> extraHeaders)
nativeLoadUrl(url, extraHeaders);
WebViewCore.java
transferMessages
case LOAD_URL:
loadUrl(String url, Map<String, String> extraHeaders)
mBrowserFrame.loadUrl(url, extraHeaders);
mProvider --> WebViewClassic
mWebViewCore.sendMessage(EventHub.LOAD_URL, arg);
mProvider.loadUrlImpl(String url, Map<String, String> extraHeaders)
mProvider.loadUrlImpl(String url)
mProvider.loadUrl(String url)
WebView.java loadUrl(String url)
0 0
- Android WebView LoadUrl过程
- WebView.loadUrl
- android webview loadurl弹出系统浏览器问题
- android webview loadurl弹出系统浏览器问题
- [Android] WebView之loadDataWithBaseUrl()和loadUrl()
- Android webview执行loadUrl时隐藏键盘的workround
- Android WebView with https loadUrl shows blank/empty page
- Android webview loadUrl() 禁止弹出系统浏览器代码
- android WebView中loadUrl方法显示本地html中的图文
- android WebView中loadUrl方法显示本地html中的图文
- Android Webview的postUrl与loadUrl加载页面
- webView的loadUrl
- WebView loadUrl,loadData,loadDataBase
- WebView.loadUrl使用误区
- Android Java调JS:WebView.loadUrl("javascript:functionName()") JS调Java:WebView注册JS函数
- Android webview调用js代码无效 webView.loadUrl("javascript:alert('hello')")
- WebView中loadUrl 和 loadData
- WebView中loadUrl 和 loadData
- 今天发现了一个问题app在xp上运行良好但是放到windows 2008 上就不行了
- Ubuntu 开启 SSH服务,并实现远程windows 主机 SecureCRT连接
- Android APK反编译详解(附图)
- Protocol Buffers的应用与分析
- java学习第一天:基础
- Android WebView LoadUrl过程
- CPU 内存 磁盘监控
- Ubuntu下忘记MySQL密码重设方法
- commons-fileupload实现文件上传,可多文件上传和实现进度条
- android LinearLayout和RelativeLayout实现精确布局
- Ubuntu下MySQL的安装及远程连接配置等配置
- hibernate执行原生sql(直连jdbc解决)
- java学习第二天:标识符、变量、运算符
- 谷歌眼镜设计规范之最佳实践