【发布时间】:2010-08-26 03:14:56
【问题描述】:
我想知道 webview 如何加载特定的 URL。它是创建一个新线程还是在同一个线程(即 UI 线程)中加载 URL?我问这个的原因是当我从当前活动(在当前活动的 onCreate 方法中)启动一个活动时,我遇到了一些奇怪的唤醒锁定问题,它在它的 onCreate 方法中创建一个 WebView 并使用 loadUrl 方法加载一个 URL。因此,当我完成此活动并返回启动的活动时,由于唤醒锁定时间已过期,此活动将重新启动。
我搜索了一下,发现如果活动的 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.
}
}
【问题讨论】:
-
您好,我在 onCreate 中使用了 WebViews(和 loadUrl)并且从未遇到任何问题(甚至在同一个 onCreate 中进行了 XML 解析)。你在 onCreate 中还做了什么?您是作为对等活动还是作为子活动启动该活动?
-
所以 startActivityForResult 创建一个子活动?如果确实如此,那么是的,我正在启动一个子活动。
-
我添加了一些示例代码。
-
这有点笼统。您能否粘贴更具体的代码。
-
您好,找到了问题所在。启动新活动时,主要活动代码正在做一些坏事。感谢您的帮助:)
标签: android multithreading webview