facebook メッセンジャー アプリの一部である facebook チャットヘッドで、次の動作に気付きました: 私が見る限り、チャット ヘッド自体と開いているチャット画面はすべてサービスの一部です。アクティビティは含まれません。
どうすれば確信できますか?開いたチャット画面でホームを押すと、最小化されてチャット ヘッドに戻り、すぐにチャット画面を再度開くことができます。チャット画面がアクティビティの場合、ホーム ボタンが押された後にアクティビティを再度開くと、次のようstartActivity(intent)
にアクティビティの開始が遅れます:
ホーム ボタンを押した後、5 秒の遅延なしでサービスからアクティビティを開始する
そしてここ:ホームボタンを押したときにアクティビティを表示するのに5秒遅れる理由は?
サービスの onCreate メソッドでは、次のコードを使用してサービスから UI を表示します。
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);
}
....
}
UIを表示するサービスから「ホームボタンが押された」イベントを直接受け取る方法を知っている人はいますか? ユーザーがホームボタンを押したときに、ビューを最小化したいと思います (Facebook のチャットヘッドに似ています)。