我想知道webview如何加载特定的URL。它是在同一个线程(即UI线程)中创建新线程还是加载URL?我问这个的原因是当我从当前Activity(在当前Activity的onCreate方法中)启动一个Activity时,我面临一些奇怪的唤醒锁定问题,它在其onCreate方法中创建一个WebView并使用loadUrl方法加载一个URL。因此,当我完成此活动并返回到已启动的Activity时,因为唤醒锁定时间已到期而重新启动。
我用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. } }
答案 0 :(得分:3)
WebView中的loadUrl方法使用Handler机制,即它将在UI线程中运行。当活动暂停/停止时,您应该通过调用webView.stopLoading()来停止数据加载。