StrictMode 会在 ShareActionProvider 检测到内存泄漏,只要有方向更改
01-30 21:26:41.466 4411-4411/com.android.example E/StrictMode: class com.swag.example.ui.BookDetailActivity; instances=2; limit=1
android.os.StrictMode$InstanceCountViolation: class com.swag.prolificlibrary.ui.BookDetailActivity; instances=2; limit=1
at android.os.StrictMode.setClassInstanceLimit(StrictMode.java:1)
然而,即使多次尝试更改方向,实例数仍然 2
这是我在一个片段中的ShareActionProvider实现,它是BookDetailActivity的一部分:
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.menu_share, menu);
MenuItem shareItem = menu.findItem(R.id.action_share);
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(shareItem);
if (mShareActionProvider != null) {
mShareActionProvider.setShareIntent(getDefaultIntent());
}
}
private Intent getDefaultIntent() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, mItem.getTitle());
intent.putExtra(Intent.EXTRA_TEXT, mItem.getAuthor());
return intent;
}
如果我注释掉对 getDefaultIntent()的调用,我就不会看到此泄漏。
我尝试在 onStop()生命周期方法中明确将intent设置为null(通过使其成为类的成员变量),但这没有帮助
我的实施有问题,或者这是ShareActionProvider的已知问题?我无法在这个问题上找到任何现有的线程。