Я использую System.Threading.Timer в событии Textaged для Searchview внутри фрагмента.
System.Threading.Timer _timer;
private void SearchView_QueryTextChange(object sender, Android.Support.V7.Widget.SearchView.QueryTextChangeEventArgs e)
{
_timer.Change(300, Timeout.Infinite);
...
...
}
public override void OnResume()
{
_timer = new System.Threading.Timer(MyCallBack);
base.OnResume();
}
public override void OnPause()
{
_timer.Dispose();
base.OnPause();
}
Я создаю экземпляр таймера при вызове onResume и распоряжаюсь (свободными ресурсами) при вызове onPause.
Проблема в том, что если я нажимаю кнопку «домой», таймер сбрасывается (onPause), но после повторного нажатия на приложение onResume не вызывается. Когда я пытаюсь ввести searchView, таймер удаляется.
В каком методе фрагмента я должен создавать экземпляр неуправляемого ресурса (onstart, oncreateview, onResume ...) и когда его утилизировать (onStop, onpause, onDestroy ...), поэтому я не создаю несколько таймеров (утечка) )?
Как правильно?