我对Java语言有疑问:在android
中我尝试在进程A中更改System.property X,然后激活进程B
(我想也许它正在重新初始化所有的System.properties)
(进程B未按预期看到更改的System.property X),
然后我恢复了第一个进程,看到已更改的System.property仍然存在。
我知道System类无法实例化。既然如此,
我认为它将在所有流程中共享。
然而事实并非如此。
我理解为什么我们希望这种情况发生,但是如果System类没有实例化,怎么会这样呢? Java中的哪种机制会导致这种行为?
感谢您的帮助
答案 0 :(得分:1)
Java中的哪种机制会导致这种行为?
虽然System
类字节码在Dalvik VM进程之间共享,但System
类可能持有的任何单个数据(或Dalvik VM进程之间不共享任何其他Android OS Java类。相反,这些对象在本地进程的堆上实例化,与任何其他对象没有区别。
答案 1 :(得分:0)
正如您可能知道的那样,Android会保留您的活动,直到它决定需要其他资源。因此当你“恢复第一个进程并看到更改后的System.property
仍然存在”时,您可能已经获得了您离开的状态,就好像您正在切换窗口一样你的桌面。