让我感到惊讶的是:系统的UI对象(如ListVIEw)和我分配的内存空间不会同时被破坏.为什么他们不同时死亡(或活着)?
查看此处的体验:
public class PracticeActivity extends ListActivity { @OverrIDe public voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // If there is left-over value in G.count[99],then do not populate // the ListVIEw. if (G.count[99] == 0) { ListVIEw lv = getListVIEw(); lv.setAdapter(new ArrayAdapter<String>(this,androID.R.layout.simple_List_item_1,m_Starbucks)); } Log.d("TAG",messageformat.format("Created,count = {0,number}",G.count[99])); Log.d("TAG",messageformat.format("Starbucks = {0}",m_Starbucks[0])); G.count[99]++; // increment the count m_Starbucks[0] = "Coffee Frappuccino"; // and change the menu } @OverrIDe public voID onRestart() { super.onRestart(); Log.d("TAG","Restarted"); } @OverrIDe public voID onStart() { super.onStart(); Log.d("TAG","Started"); } @OverrIDe public voID onResume() { super.onResume(); Log.d("TAG","Resumed"); } @OverrIDe public voID onPause() { super.onPause(); Log.d("TAG","Paused"); } @OverrIDe public voID onStop() { super.onStop(); Log.d("TAG","Stopped"); } @OverrIDe public voID onDestroy() { super.onDestroy(); if (isFinishing()) Log.d("TAG","Destroyed -- someone finished me"); else Log.d("TAG","Destroyed -- system needs resources"); } private static final String[] m_Starbucks = { "Latte","Cappuccino","Caramel Macchiato","Americano","Mocha","White Mocha","Mocha Valencia","Cinnamon Spice Mocha","Toffee Nut Latte","Espresso","Espresso Macchiato","Espresso Con Panna" };}
这是G.java文件中定义的类G:
public class G { public static int[] count = new int[100];}
运行此测试产生以下结果:
Created,count = 0Starbucks = LatteStartedResumedPausedStoppedDestroyed -- someone finished meCreated,count = 1Starbucks = Coffee FrappuccinoStartedResumed
在第一个会话中,count [99]的值为0,因此程序将填充ListVIEw,所以一切都很好.
在第二个会话中,count [99]仍保留第一个会话剩余的值,因此程序没有填充ListVIEw,希望ListVIEw也可用.但事实并非如此,结果是黑屏.这意味着从上次会话中保留了G.count [](m_Starbucks []也是如此),但ListVIEw没有生存.
很明显,系统中只有一个PracticeActivity实例,当这个实例消亡时,PracticeActivity和G类都应该死掉.但他们没有,他们仍保留上一届会议的价值观.
问题:
>如果count []和m_Starbucks []是
仍然可用,那么这意味着
PracticeActivity和G都是
还活着.然后是ListVIEw的原因
到哪里去了?不应该全部死亡或
住在同一时间?
>当我看到我的一些课程时
成员持有他们的旧价值观
上次会议,我能相信吗?
我所有班级的成员也都有效???即,AndroID
在一个全有或全无的情况下杀死我的资源
时尚?或者,它可以删除一些和
离开其他人? (这个问题
不应该存在于第一个
地方,但看到了结果
经验,人们开始怀疑.)
任何人都可以对此有所了解吗?非常感激.
解决方法 只要JVM(DVM)存在,静态类成员就会活着 – 这可能(当然也可能)长于 你的活动生命周期.您的活动可能会被破坏,但静态字段会在其中存活. 总结以上是内存溢出为你收集整理的android – 关于活动生命周期和资源删除/分配的问题全部内容,希望文章能够帮你解决android – 关于活动生命周期和资源删除/分配的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)