bhu*_*ups 5 multithreading android webview
我想知道webview如何加载特定的URL.它是在同一个线程即UI线程中创建新线程还是加载URL?我问这个的原因是当我从当前Activity(在当前Activity的onCreate方法中)启动一个Activity时,我面临一些奇怪的唤醒锁定问题,它在其onCreate方法中创建一个WebView并使用loadUrl方法加载一个URL.因此,当我完成此活动并返回到已启动的活动时,由于唤醒锁定时间已过期而重新启动.
我用Google搜索并发现如果Activity的onCreate方法花费的时间太长,则可能会发生此类问题.有没有人遇到过涉及WebView的这类问题?任何形式的帮助将非常感激.
这是示例代码.
Activity A:
class ActivityA {
onCreate(){
initializeSomething();
registerSomeEvents();
startSomething();
}
onSomeListener(){
if(someFlag) {
startActivity(ActivityB);
//this will pause the current activity i.e. ActivityA
}
}
}
Activity B:
class ActivityB(){
onCreate() {
if(someFlag){ //someFlag is coming in intent
helper = createHelperX();
} else {
helper = createHelperY();
}
helper.pleaseHelp(); //this does the rest of thing using activity instance
}
HelperX:
class HelperX(){
createHelper() {
//setup layout views etc, no WebView here
//and wait for user interaction
//register some events
}
onSomeEvent(){
if(someOtherFlag) {
startActivityForResult(ActivityB); //and pass some flag, now this flag will trigger HelperY
}
}
HelperY:
class HelperY(){
createHelper() {
//setup views etc , this contains a WebView and calls loadURL.
}
}
Run Code Online (Sandbox Code Playgroud)
WebView中的loadUrl方法使用Handler机制,即它将在UI线程中运行。当活动暂停/停止时,您应该通过调用 webView.stopLoading() 来停止数据加载。