当我从主要活动A启动活动B然后返回时,应删除该活动。但事实并非如此。当我再次从A推出B时,我发现有些东西留下了。
我正在使用systrace来比较第一次B跑和第二次B跑的结果。我发现第二次B跑的处理能力较低。活动开始和通货膨胀时间大大减少。渲染响应是原始响应的2/3。
我尝试在活动B的onStop()
和onPause()
上添加finish()。此外,在启动B活动的Intent中,我添加了标志以防止活动存储在堆。在清单上,我在活动B上添加了android:noHistory="true"
。我甚至尝试手动调用GC。什么都没有帮助。
我可以重置B活动的唯一方法是完全关闭应用程序。如何完全删除活动B,包括当我返回主活动时留下的任何缓存内容?
答案 0 :(得分:-1)
一旦你回到A,你是否正在运行B活动?
在终端中,运行
adb shell dumpsys activity | grep -i run
authority=x.y.z.com.android.tools.ir.server.InstantRunContentProvider
Running activities (most recent first):
Run #1: ActivityRecord{B_Activity t6}
Run #0: ActivityRecord{A_Activity t6}
finish()
B_Activity,然后返回A_Activity。
authority=x.y.z.com.android.tools.ir.server.InstantRunContentProvider
Running activities (most recent first):
Run #1: ActivityRecord{A_Activity t6}
Run #0: ActivityRecord{B_Activity t6 f}
即使你完成它,你仍然可以看到B_Activity。