java—这种方法是不是不好的做法(内存泄漏?)

4urapxun  于 2021-06-30  发布在  Java
关注(0)|答案(0)|浏览(256)

我创建了一个类来扩展android的 WebViewClient 因此,我可以使它成为一个'预览'只客户端-即大多数导航是不允许的。
当用户尝试导航时,我想弹出一个 toast 提醒他们,他们是在一个有限的预览视图,他们不能进一步导航。
但是吐司需要一个活动 Context .
为了使 Context 我可以分配一个 context 到一个变量( appContext )在类的构造函数中,如下所示:

public class nonInteractiveWebViewClient extends WebViewClient {

    public boolean canBrowse = false;
    public Context appContext;

    public nonInteractiveWebViewClient(Context context) {
        appContext = context;
    }

    @Override
    public boolean shouldOverrideKeyEvent (WebView view, KeyEvent event) {
        return true;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

        String host = Uri.parse(view.getUrl()).getHost();

        canBrowse = // logic here to determine whether to allow navigation

        if (canBrowse) {
            return false;
        } else {
            Toast.makeText(appContext, appContext.getString(R.string.link_test_preview_only), Toast.LENGTH_SHORT).show();
            return true;
        }
    }
}

当我创建 nonInteractiveWebViewClient 调用中的对象 activity 我称之为 getApplicationContext() 通过考试 context 给建造师。
这是个坏主意吗?
正如@sajjad之前提到的, shouldOverrideUrlLoading 有权访问 view 以及 getContext() 可以在视图上运行,因此 appContext 变量在这个exmaple中是多余的,但是。。。
我还打算在另一个类中使用此模式,该类包含多个活动使用的许多方法,并且需要访问
activity context 在很多方法中。这些方法是独立函数,不扩展任何可能访问 context . 在另一个类中使用上述方法将简化我的代码并减少对 getApplicationContext 调用活动需要做的,但我担心它可能会导致内存泄漏或什么的。
这是个坏方法吗?
(回答时,请注意我是一名工程师,虽然我对编程的基本理论有一定的了解,但我绝不是一名cs。我喜欢编写尽可能模块化的代码,并尽可能避免代码重复,因此我用这种方式来解决这个问题。)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题