Android 单个应用程序中有多个ContentProvider
是否可以为每个表创建ContentProvider means单个应用程序中的多个内容提供商 我想这样做有各种原因 1-随着我的应用程序的发展,单一的ContentProvider类变得臃肿和凌乱Android 单个应用程序中有多个ContentProvider,android,android-contentprovider,Android,Android Contentprovider,是否可以为每个表创建ContentProvider means单个应用程序中的多个内容提供商 我想这样做有各种原因 1-随着我的应用程序的发展,单一的ContentProvider类变得臃肿和凌乱 2-我不想与其他应用程序共享整个ContentProvider类。我只想和你共用一张桌子。 是的,很好。正如您所指出的,它允许每个文件都包含特定的数据段,并且每个文件都可以拥有相应的权限 是的,很好。正如您所指出的,它允许每个文件都包含特定的数据段,并且每个文件都可以拥有相应的权限 一般来说,一个应
2-我不想与其他应用程序共享整个ContentProvider类。我只想和你共用一张桌子。 是的,很好。正如您所指出的,它允许每个文件都包含特定的数据段,并且每个文件都可以拥有相应的权限 是的,很好。正如您所指出的,它允许每个文件都包含特定的数据段,并且每个文件都可以拥有相应的权限 一般来说,一个应用程序中可以有多个内容提供商,所以这根本不是问题。只需确保两个内容提供商拥有不同的权限,否则它将无法工作。内容提供商权限必须是唯一的 但是,在决定是否与一个或多个内容提供者一起使用时,有更多的事情要考虑。以下是其中一些: 您的问题有点暗示您计划在两个内容提供商中共享同一个SQLite数据库(我从术语“表”中计算出来),这不是一个好主意。对于数据库,每个内容提供商可能都有自己的
SQLiteOpenHelper
实例,这意味着您可能会遇到锁定问题,请参见以下答案:
您可能会找到与两个内容提供商共享同一个SQLiteOpenHelper
实例的方法,但从长远来看,这很可能会导致糟糕的体系结构和其他问题
因此,如果您想使用多个内容提供商,请确保两个内容提供商都有自己的专用权限和数据库,这也意味着您不能使用某些数据库功能,如外键约束(或者您必须自己处理)或事务(如果它们跨越两个数据库)
关于您的理由:不确定您是在谈论接口(合同)还是实际的.java文件,但这并不重要,因为这仅仅是一个架构问题,如果只有一个内容提供商,它肯定是可以解决的。如果您的内容提供商类文件太大,那么您的体系结构可能不太好
此外,您是否应该使用两个内容提供商在很大程度上取决于它们提供的数据类型
这些数据是否相关(或与同类数据有关)?最好只使用一个内容提供商
完全无关?两个内容提供商可能是更好的选择
原因需要更多的考虑。问题是为什么不公开某些表?这是安全/隐私问题吗?或者只是其他应用程序不需要这些数据
如果是为了安全或隐私,最好使用两个内容提供商,并在保存敏感数据的提供商上设置android:exported=“false”
。但即使只有一家内容提供商,也有办法保护这些内容
如果安全或隐私不是问题,就不要将内容URI发布到公共合同中的其他表中。通常,一个应用程序中可以有多个内容提供商,因此这根本不是问题。只需确保两个内容提供商拥有不同的权限,否则它将无法工作。内容提供商权限必须是唯一的 但是,在决定是否与一个或多个内容提供者一起使用时,有更多的事情要考虑。以下是其中一些: 您的问题有点暗示您计划在两个内容提供商中共享同一个SQLite数据库(我从术语“表”中计算出来),这不是一个好主意。对于数据库,每个内容提供商可能都有自己的
SQLiteOpenHelper
实例,这意味着您可能会遇到锁定问题,请参见以下答案:
您可能会找到与两个内容提供商共享同一个SQLiteOpenHelper
实例的方法,但从长远来看,这很可能会导致糟糕的体系结构和其他问题
因此,如果您想使用多个内容提供商,请确保两个内容提供商都有自己的专用权限和数据库,这也意味着您不能使用某些数据库功能,如外键约束(或者您必须自己处理)或事务(如果它们跨越两个数据库)
关于您的理由:不确定您是在谈论接口(合同)还是实际的.java文件,但这并不重要,因为这仅仅是一个架构问题,如果只有一个内容提供商,它肯定是可以解决的。如果您的内容提供商类文件太大,那么您的体系结构可能不太好
此外,您是否应该使用两个内容提供商在很大程度上取决于它们提供的数据类型
这些数据是否相关(或与同类数据有关)?最好只使用一个内容提供商
完全无关?两个内容提供商可能是更好的选择
原因需要更多的考虑。问题是为什么不公开某些表?这是安全/隐私问题吗?或者只是其他应用程序不需要这些数据
如果是为了安全或隐私,最好使用两个内容提供商,并在保存敏感数据的提供商上设置android:exported=“false”
。但即使只有一家内容提供商,也有办法保护这些内容
如果安全性或隐私不是问题,就不要将内容URI发布到公共合同中的其他表。Great!。谢谢你回答我问题的每一个方面。太好了