ShareActionProvider的内存泄漏?

时间:2016-01-31 05:45:51

标签: android memory-leaks shareactionprovider

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的已知问题?我无法在这个问题上找到任何现有的线程。

0 个答案:

没有答案