Retain IME surface with a timeout

As of today, IME surface is removed immidiately after its hidden.
This causes IME surface to be recreated when next time its requested,
which takes noticeable amount of time ~30ms on a typical phone [1]
In order to improve IME latency, we keep the surface in memory a little
longer.
This is ideal for use cases where IME has to move between DisplayAreas
OR when IME is closed only briefly.
While there could be other strategies to hold IME surface in memory,
timeout is simplistic and is also unaffected by IMF lifecycle, which
could vary when moving between DisplayAreas or Displays.

Bug: 167948419
Bug: 167948123
Test: atest CtsInputMethodTestCases

[1] refer design doc in bug 167947940

Change-Id: Ib062640b68164efbb647e7bf27b7f8eb5ed252dc
1 file changed