代码之家  ›  专栏  ›  技术社区  ›  bhups

WebView的loadURL方法是否在UI线程上运行?

  •  5
  • bhups  · 技术社区  · 14 年前

    我想知道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. } }

    1 回复  |  直到 14 年前
        1
  •  3
  •   Karan    14 年前

    WebView中的loadURL方法使用处理程序机制,即它将在UI线程中运行。当活动暂停/停止时,应通过调用WebView.StopLoading()停止数据加载。