android 中UID與PID的作用與區別


PID:為Process Identifier, PID就是各進程的身份標識,程序一運行系統就會自動分配給進程一個獨一無二的PID。進程中止后PID被系統回收,可能會被繼續分配給新運行的程序,但是在android系統中一般不會把已經kill掉的進程ID重新分配給新的進程,新產生進程的進程號,一般比產生之前所有的進程號都要大。

UID:一般理解為User Identifier,UID在linux中就是用戶的ID,表明時哪個用戶運行了這個程序,主要用於權限的管理。而在android 中又有所不同,因為android為單用戶系統,這時UID 便被賦予了新的使命,數據共享,為了實現數據共享,android為每個應用幾乎都分配了不同的UID,不像傳統的linux,每個用戶相同就為之分配相同的UID。(當然這也就表明了一個問題,android只能時單用戶系統,在設計之初就被他們的工程師給閹割了多用戶),使之成了數據共享的工具。

因此在android中PID,和UID都是用來識別應用程序的身份的,但UID是為了不同的程序來使用共享的數據。

在android 中要通過UID共享數據只需在程序a,b中的menifest配置即可,具體如下:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package
="com.perseus.a"
      android:versionCode
="1"
      android:versionName
="1.0"
android:sharedUserId
="com.share"
>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package
="com.perseus.b"
      android:versionCode
="1"
      android:versionName
="1.0"
android:sharedUserId
="com.share"
>

這樣我們就可以在a程序中通過跳轉activity的形式訪問b中的數據了。

   這樣的話你也許會有疑問,如果讓其他的開發這知道了我們的shareUserId知道了我們的ID,那我們的數據不是暴露了,放心吧google不會犯這樣的低級錯誤的,我們要使不同的程序能夠相互訪問,還需要擁有相同的簽名,每個公司或者開發者的簽名是唯一的,這樣我們就不用擔心了,另外兩者能夠訪問,別忘了權限




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM