【问题标题】:How to use "pauseTimers"如何使用“暂停定时器”
【发布时间】:2018-03-25 16:57:15
【问题描述】:

我想在 android 中为 WebView 创建一个应用程序,如何使用“onPause()”停止 WebView 我已尝试使用此代码:

    @Override
public void onPause(){
    super.onPause();
    WebView.pauseTimers();
}

但它不起作用,它说:

Error: non-static method pauseTimers() cannot be referenced from a static context

这是WebView的全部代码

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    WebView myWebView = (WebView) findViewById(R.id.webview);

    myWebView.setWebViewClient(new WebViewClient());

    myWebView.loadUrl("MyURL");

    WebSettings webSettings = myWebView.getSettings();

    webSettings.setJavaScriptEnabled(true);

}

【问题讨论】:

  • 对不起,你能详细说明你想说什么吗?目前你的问题没有什么意义。如果有帮助,请包含一些相关代码。 publicprivate 只会影响您自己的应用程序中类的可见性。
  • 嗨,我已经重新阐述了这条消息

标签: java android


【解决方案1】:

您正在尝试以静态方式访问非静态方法。首先快速解释一下static 方法的作用。考虑这个类:

public class ClassA {
    public void methodOne() {}
    public static void methodTwo() {}
}

methodOne 是一个实例方法。这只能从使用 new 关键字声明的 ClassA 实例调用,如下所示:

ClassA myClassA = new ClassA();
myClassA.methodOne();

methodTwostatic,因此它属于类本身,而不是该类的任何特定实例。这样做的缺点是static 方法不能访问成员变量,除非它们也被声明为static

ClassA.methodTwo();

在您的情况下,您需要在您在 Activity 或布局中声明的 WebView 对象的 instance 上调用 pauseTimers()。因此,从您上面发布的代码中:

private WebView myWebView; // Move this declaration out from onCreate()

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    myWebView = (WebView) findViewById(R.id.webview);

    // rest of the method...
}

@Override
public void onPause() {
    super.onPause();
    myWebView.pauseTimers();
}

【讨论】:

  • 我选择回答而不是提出重复,因为在提供额外信息之前,我已经为这个问题用完了我的标志。然而,相关的欺骗是这样的:stackoverflow.com/questions/4969171/…
猜你喜欢
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
相关资源
最近更新 更多