Android - 多项活动,让它们保持活力,并保存状态?

时间:2011-03-31 23:41:20

标签: java android memory-management android-activity

我有一个应用程序在遍历文件系统时创建多个活动(每个文件夹或文件一个活动,搜索活动等)。这个应用程序有时会在[返回]时崩溃。跟踪日志表明它在onCreate(...)中崩溃,它告诉我活动已经被销毁,并且在返回时正在重新创建它们。这是一个问题,因为我在活动堆栈中向前移动时通过Intent传递数据(即正常的文件夹遍历)。

这是我得到的:

  

ERROR / AndroidRuntime(978):引起:   显示java.lang.NullPointerException   Folder.onCreate(Folder.java:155)

     

错误/ AndroidRuntime(978):at   android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)   错误/ AndroidRuntime(978):at   android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)...

在类似文件系统浏览器的应用程序中处理内存,多个(甚至是0-100?)活动,返回等的最佳方法是什么?

感谢。

编辑:我希望尽可能继续使用活动,或者找到一种方法来保留从一项活动转移到另一项活动的外观。如果我能就如何最大限度地减少活动数量(例如保存数据的方法,关闭屏幕外活动,但保留[返回]动画的方法,即使重新调用的活动需要),这将是理想的重建)。谢谢。

1 个答案:

答案 0 :(得分:2)

不要为每个目录遍历使用新活动,而是浪费了大量的资源。而是有一个活动作为文件浏览器,只保持自己的状态(当前的完全限定路径),然后当用户点击后退按钮覆盖默认操作时。见onBackPressed()

当您的onBackPressed方法被触发时,您可以采用您的状态(完整路径)并只需移动目录级别。

简单,高效,干净。