【发布时间】:2021-07-07 16:53:54
【问题描述】:
主活动:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
WebView webView = findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
webView.loadUrl("https://your_website.com");
}
public void doSomeStuff() {
//do some stuff that requires context or activity
}
}
WebApp接口:
public class WebAppInterface {
AppCompatActivity a;
public WebAppInterface(AppCompatActivity a) {
this.a=a;
}
@JavascriptInterface
public void calculate() {
a.doSomeStuff();
}
}
这会导致内存泄漏吗?如果是,实现我想要的最简单的方法是什么(从 WebAppInterface 中调用 doSomeStuff)?
编辑 1:为什么我认为这会导致内存泄漏?因为在 WebAppInterface 中存在对 Activity 的引用,并且一旦 Activity 被销毁,垃圾收集器可能不会删除该引用。
编辑 2:在我看来,WebView 是 MainActivity 的一部分,因此不能比 MainActivity 活得更久。而且 WebAppInterface 也必须是 WebView 的“成员”,因此应该没有内存泄漏,对吧?
【问题讨论】:
标签: android memory android-activity