在小米手机上,通过在设置页面,输入“应用双开”,可以进入APP分身的列表页面。列表中出现的是手机支持分身的APP,切换开关,即可开始分身。
选中微信进行分身后,桌面上出现了第二个有角标的微信。点开后使用,与本尊APP无差别。
但是通过adb命令调用微信的页面,发现打开的都是本尊微信,分身的微信无法被调用。
使用cmd命令查看,发现如下差别:
shell@rolex:/ $ ps |grep com.tencent.mm
USER PID PPID VSIZE RSS WCHAN PC STAT NAME
u0_a146 10419 620 1786168 136556 SyS_epoll_ 0000000000 S com.tencent.mm
u0_a146 10480 620 1435444 54060 SyS_epoll_ 0000000000 S com.tencent.mm:exdevice
u0_a146 10538 620 1449308 60888 SyS_epoll_ 0000000000 S com.tencent.mm:push
u0_a146 10635 620 1958864 105996 SyS_epoll_ 0000000000 S com.tencent.mm:appbrand0
u0_a146 10689 620 1763200 81336 SyS_epoll_ 0000000000 S com.tencent.mm:support
u0_a146 10812 620 1767480 87640 SyS_epoll_ 0000000000 S com.tencent.mm:tools
u999_a146 13690 620 1811072 164948 0000000000 R com.tencent.mm
u999_a146 13754 620 1436928 63532 SyS_epoll_ 0000000000 S com.tencent.mm:exdevice
u999_a146 13819 620 1450284 63552 SyS_epoll_ 0000000000 S com.tencent.mm:push
u999_a146 13914 620 1688308 78092 SyS_epoll_ 0000000000 S com.tencent.mm:appbrand0
u999_a146 13963 620 1688804 73876 SyS_epoll_ 0000000000 S com.tencent.mm:support
u999_a146 14075 620 1652184 64436 futex_wait 0000000000 S com.tencent.mm:tools
每列的数据含义,如表头所示:
USER: 进程的当前用户;
PID : process ID的缩写,也就进程号;
PPID :process parent ID,父进程ID
VSIZE : virtual size,进程虚拟地址空间大小;
RSS : 进程正在使用的物理内存的大小;
WCHAN :进程如果处于休眠状态的话,在内核中的地址;
PC : program counter,
STAT:进程当前状态,进程状态使用字符表示:
如R(running正在运行或准备运行)、S(sleeping睡眠)、I(idle空闲)、Z (僵死)、D(不可中断的睡眠,通常是I/O)、
P(等待交换页)、W(换出,表示当前页面不在内存)、N(低优先级任务)T(terminate终 止);
NAME: process name,进程的名称
u0_a146是微信本尊,u999_a146是微信分身。由此可见:小米手机在系统层面对应用进行分身后,并没有修改其包名等信息,而是通过放置新的用户空间来得以分身。