最近在学Android,隐式启动Activity要将一个Uri作为参数传递到Intent中。因此不可避免的接触到Uri和Url。网上查了一个小时资料,发现怎么理解的都有,描述的刚好相反的也有,索性把自己理解的写出来,希望大家能指正。
Url和Uri都用于描述一个资源,该资源可以是一个网络资源也可以是一个本地资源。个人认为Url和Uri的最重要区别在于对这个资源的描述侧重点不同:
- Uri侧重于描述该资源(在网络中或在本地)的唯一性。
- Url侧重于描述该资源(在网络中或在本地)怎么被找到(定位该资源的位置)。
例子1:
content://com.android.contacts/contacts/3
以上例子是android的通讯录的Uri,即看到这条Uri,Android系统能确定(区别于其它)该Uri是要找到通讯录里面的第三个人的信息。那么 content为资源名称,com.android.contacts是资源提供者的名字,contacts/3代表的是该资源提供者的contacts这个数据集中的第3条资源。从这个例子中可以看出第3个人的信息并不是一个实际的路径,而是只要能区分别的数据集即可。
例子2:
浅谈Url和Uri的区别_Sunflower401的博客-优快云博客
以上例子是一个Url,通俗讲就是一个网址,这个网址代表是blog.youkuaiyun.com该域名下的一个具体的资源,其实就是本篇博客。资源的具体位置是blog.youkuaiyun.com/服务器下sly923113560/article/details这个路径下的89313965这篇博客。因此该Url的主要作用是能够找到本博客89313965这个资源。和上个例子比较,该例中要找到某个资源,必须在Url中提供一个具体的路径才行。
产生Uri和Url混淆的原因主要是,1、既然Uri能够描述该资源的唯一性(Uri的功能),那么该Uri也就有定位该资源的能力(Url的功能);2、既然Url能够定位到唯一的一个资源,那么Url也应该能够描述该资源的唯一性。从这个角度理解,两者是很相似的,但也能够体现出两者的本质区别:Uri是对某个资源的抽象描述,而Url是一种定位该资源的访问机制。Uri比Url更抽象,且Uri的思想是包含了Url的。
由于本身并不擅长计算机网络,所以无法从专业角度阐述自己的想法,对两者的区别目前仅理解到这个层次就够用了。以上想法仅仅是自己的理解,不代表正确的结论, 写出来也是希望能够得到大家的指正,有了心得想法会更新在这里。