我发现虽然有很多关于Xamarin Android的教程,但似乎没有关于如何处理资源的大量内容。更具体地说,当它们被丢弃时。
例如,在活动的OnCreate处理程序中,我正在进行多个Rx订阅,每个订阅返回一个IDisposable
。我试图在各种其他处理程序(例如OnDestroy)中处理它们,但这些处理程序永远不会被调用。但订阅似乎堆积如山,因为每次导航活动时OnCreate都会运行。
除了这些订阅之外,还有我分配给类级变量(字段)的所有UI控件(TextViews,Buttons等)。那些也实施IDisposable
。
据我所知,我到处都有内存泄漏。
在任何地方都有指导吗?
@SushiHangover是正确的(感谢寿司)。 OnPause
和OnResume
是我追求的事件。我还有一点挑战,当我点击我的自定义“返回开始”按钮时,我需要回到开始屏幕(沿途跳过中间屏幕)。
这样做的方法是在启动主屏幕活动时使用ClearTop
ActivityFlag(Android.Content.ActivityFlags.ClearTop
)。原始的Android代码版本可以在这里看到https://stackoverflow.com/a/5794572/540156
当你这样做时,你可以清理活动,当它们被弹出时会从背堆中弹出(在OnDestroy
处理程序中,从重新收集)。