Android ContentProvider实现两个程序间数据共享demo,跨进程通讯

关于面试的充分准备

一些基础知识和理论肯定是要背的,要理解的背,用自己的语言总结一下背下来。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,我能明显感觉到国庆后多了很多高级职位,所以努力让自己成为高级工程师才是最重要的。

好了,希望对大家有所帮助。

接下来是整理的一些Android学习资料,有兴趣的朋友们可以关注下我免费领取方式

①Android开发核心知识点笔记

②对标“阿里 P7” 40W+年薪企业资深架构师成长学习路线图

③面试精品集锦汇总

④全套体系化高级架构视频

**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

}

/**

  • 添加数据

*/

@Override

public Uri insert(Uri uri, ContentValues values) {

// 根据URI匹配 URI_CODE,从而匹配ContentProvider中相应的表名

// 该方法在最下面

String table = getTableName(uri);

// 向该表添加数据

db.insert(table, null, values);

// 当该URI的ContentProvider数据发生变化时,通知外界(即访问该ContentProvider数据的访问者)

mContext.getContentResolver().notifyChange(uri, null);

// // 通过ContentUris类从URL中获取ID

// long personid = ContentUris.parseId(uri);

// System.out.println(personid);

return uri;

}

/**

  • 查询数据

*/

@Override

public Cursor query(Uri uri, String[] projection, String selection,

String[] selectionArgs, String sortOrder) {

// 根据URI匹配 URI_CODE,从而匹配ContentProvider中相应的表名

// 该方法在最下面

String table = getTableName(uri);

// // 通过ContentUris类从URL中获取ID

// long personid = ContentUris.parseId(uri);

// System.out.println(personid);

// 查询数据

return db.query(table,projection,selection,selectionArgs,null,null,sortOrder,null);

}

/**

  • 更新数据

*/

@Override

public int update(Uri uri, ContentValues values, String selection,

String[] selectionArgs) {

// 由于不展示,此处不作展开

return 0;

}

/**

  • 删除数据

*/

@Override

public int delete(Uri uri, String selection, String[] selectionArgs) {

// 由于不展示,此处不作展开

return 0;

}

@Override

public String getType(Uri uri) {

// 由于不展示,此处不作展开

return null;

}

/**

  • 根据URI匹配 URI_CODE,从而匹配ContentProvider中相应的表名

*/

private String getTableName(Uri uri){

String tableName = null;

switch (mMatcher.match(uri)) {

case User_Code:

tableName = DBHelper.USER_TABLE_NAME;

break;

case Job_Code:

tableName = DBHelper.JOB_TABLE_NAME;

break;

}

return tableName;

}

}

服务端源码:https://download.csdn.net/download/meixi_android/10698025

客户端通过uri链接到服务端:

===============

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/**

  • 对user表进行操作

*/

// 设置URI

Uri uri_user = Uri.parse(“content://scut.carson_ho.myprovider/user”);

// Uri uri_user = Uri.parse(“content://cn.scu.myprovider/user”);

// 插入表中数据

ContentValues values = new ContentValues();

values.put(“_id”, 4);

values.put(“name”, “Jordan”);

// 获取ContentResolver

ContentResolver resolver = getContentResolver();

// 通过ContentResolver 根据URI 向ContentProvider中插入数据

resolver.insert(uri_user,values);

// 通过ContentResolver 向ContentProvider中查询数据

Cursor cursor = resolver.query(uri_user, new String[]{“_id”,“name”}, null, null, null);

while (cursor.moveToNext()){

System.out.println(“query11111 book:” + cursor.getInt(0) +" "+ cursor.getString(1));

// 将表中数据全部输出

}

cursor.close();

// 关闭游标

/**

  • 对job表进行操作

*/

// 和上述类似,只是URI需要更改,从而匹配不同的URI CODE,从而找到不同的数据资源

Uri uri_job = Uri.parse(“content://scut.carson_ho.myprovider/job”);

// Uri uri_job = Uri.parse(“content://cn.scu.myprovider/job”);

// 插入表中数据

ContentValues values2 = new ContentValues();

values2.put(“_id”, 4);

values2.put(“job”, “NBA Player”);

// 获取ContentResolver

ContentResolver resolver2 = getContentResolver();

// 通过ContentResolver 根据URI 向ContentProvider中插入数据

resolver2.insert(uri_job,values2);

// 通过ContentResolver 向ContentProvider中查询数据

Cursor cursor2 = resolver2.query(uri_job, new String[]{“_id”,“job”}, null, null, null);

结语

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!以下是目录截图:

由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。

再附一部分Android架构面试视频讲解:

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。

再附一部分Android架构面试视频讲解:

[外链图片转存中…(img-dcJ0oNEm-1715158915771)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 29
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值