Android ContentProviderClient版本()已弃用

Android ContentProviderClient版本()已弃用,android,android-contentprovider,android-contentresolver,contentproviderclient,Android,Android Contentprovider,Android Contentresolver,Contentproviderclient,我找到了一些删除数据库并使用ContentProvider重新创建它的解决方案 ContentResolver resolver = mContext.getContentResolver(); ContentProviderClient client = resolver.acquireContentProviderClient(KOOPSContentProvider.AUTHORITY); assert client != null;

我找到了一些删除数据库并使用ContentProvider重新创建它的解决方案

        ContentResolver resolver = mContext.getContentResolver();
        ContentProviderClient client = resolver.acquireContentProviderClient(KOOPSContentProvider.AUTHORITY);

        assert client != null;
        KOOPSContentProvider provider = (KOOPSContentProvider) client.getLocalContentProvider();

        assert provider != null;
        provider.resetDatabase();

        client.release();
但是在ContentProviderClient类中有
release()
已弃用的中,是否有其他方法来释放资源

编辑: 如果我尝试使用close(),它将显示为警告,如下所示


与#release()一起使用后,应释放此ContentProviderClient。

许多资源,如TypeDarray、VelocityTrackers等,都应该 使用后回收(使用recycle()调用)。这张皮棉支票是用来找衣服的 缺少recycle()调用

close()显示为禁用,为什么


它被
close
取代,但它仅在API 24上可用+

看更多

24日的
关闭
与24日以下的
释放
相同 请参阅
ContentProviderClient的源代码

  /**
 * Closes this client connection, indicating to the system that the
 * underlying {@link ContentProvider} is no longer needed.
 */
@Override
public void close() {
    closeInternal();
}

/**
 * @deprecated replaced by {@link #close()}.
 */
@Deprecated
public boolean release() {
    return closeInternal();
}
它是禁用的,因为您需要选择正确的
api级别

如果有人想知道代码应该是什么:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N)
{
    client.close();            
}
else
{
    client.release();
}

那么旧设备呢?
此ContentProviderClient在与#release()一起使用后应该释放。
许多资源,如TypeDarray、VelocityTrackers等,在使用后应该回收(通过一个recycle()调用)。此lint检查查找缺少的recycle()调用。显示为警告。我想
lint
警告有点误导:)在下面的API 24上使用
release
,使用
Build.VERSION.SDK\u INT
进行检查,就像这里提到的那样