In facebook chatheads, that are part of the facebook messenger app, I noticed the following behavior:
As far as I can see, the chat head itself and the opened chat screen are all parts of a service. No activity is involved.
How can I be sure?
After I press home on the opened chat screen, it gets minimized back to a chat head, and I can immediately reopen the chat screen. If the chat screen was an activity, then reopening the activity via startActivity(intent)
after the home button was pressed, would delay the start of the activity, as specified here:
Starting an activity from a service after HOME button pressed without the 5 seconds delay
and here: Reason for 5 sec delay to show an activity on pressing the home button?
in my service onCreate method, i use the following code to display a UI from service:
public class ServiceTest extends Service {
...
@Override
public void onCreate() {
super.onCreate();
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
windowManager.addView(someView, params);
}
....
}
Does anyone have an idea how can I receive the 'home button pressed' event directly from a service displaying a UI? I would like to minimize my view (similar to facebook chat heads) when the user presses the home button.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…