我找到了一些删除数据库的解决方案,并使用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()
已弃用,是否有其他方法可以释放资源。
编辑: 如果我尝试使用关闭(),则会显示如下警告。
This ContentProviderClient should be freed up after use with #release().
应该有许多资源,例如TypedArrays,VelocityTrackers等 使用后回收(使用recycle()调用)。这个lint检查寻找 缺少recycle()调用。
和关闭()显示为已禁用,为什么?
答案 0 :(得分:3)
如果有人想知道代码应该是什么:
<!DOCTYPE html>
<html>
<head>
<button onclick="generate();">Generate password</button>
</head>
<body>
<p id="pw">
<!-- password should go here -->
</p>
</body>
</html>
答案 1 :(得分:2)
它被close
取代,但仅在API 24 +
查看更多https://developer.android.com/reference/android/content/ContentProviderClient.html#close()
24上的 close
与24下的release
相同
请参阅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();
}