ContentProvider-CP简析与流程(3)

来源:互联网 发布:淘宝退换货怎么操作 编辑:程序博客网 时间:2024/06/16 02:22

1.当一个应用操作另一个应用的数据的时候,造成应用的不安全性;

2.CP封装了本应用的数据存储,为外层对内部的数据访问提供了保护和统一的数据接口.


3.如上图,把提供数据的应用作为S端,把请求端作为C端,形成了一个标准的CS架构.

4.标准的CS架构,如WEB,都提供了一个URL,在ContentProvider中 ,叫做URI ,如下图:

Example:

S端:

/** * @author Lean */public class ContentProviderSample extends ContentProvider {private static final String AUTHORITY="org.lean.provider";@Overridepublic boolean onCreate() {Log.v("LeanLog", "ContentProviderSample:::onCreate()");return false;}@Overridepublic Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)  {if (uri.getAuthority().equals(AUTHORITY)) {Log.v("LeanLog", "ContentProviderSample:::query()");}return null;}@Overridepublic int delete(Uri uri, String selection, String[] selectionArgs)  {return 0;}@Overridepublic String getType(Uri uri)  {return null;}@Overridepublic Uri insert(Uri uri, ContentValues values) {return null;}@Overridepublic int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)  {return 0;}}
AndroidManifest.xml

<provider android:name="org.lean.ContentProviderSample" android:authorities="org.lean.provider" android:multiprocess="true" />

C端:

/** * @author Lena */public class MainActivity extends Activity {private static final String AUTHORITY="org.lean.provider";private String mURI="content://"+AUTHORITY;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ContentResolver contentResolver=getContentResolver();contentResolver.query(Uri.parse(mURI), null, null, null, null);}}

结论:

当S安装的时候,并没有启动该应用的进程,当C端调用的时候,先判断该S的进程有没启动 如果没有启动 ,则则先启动 再调用其CURD的。


0 0