2017-10-12 9 views
-4

私はバックグラウンドでサービスを実行していますが、何らかの条件が満たされたら、アクティビティの上部にウィンドウを表示する必要があります。アクティビティ間を移動することができるはずです。そのウィンドウは、ユーザーが終了するまで常に静的に静置しておく必要があります。すべてのアクティビティの上に表示する

オプション:

  1. 私はダイアログテーマを使用して活動してみました。このアプローチの問題は、それがその瞬間にあった活動の上にあることです。別のアクティビティを開くと、この新しいアクティビティの後ろに「アクティビティダイアログ」が表示されます。

  2. 新しいアクティビティを開くたびにこの「ウィンドウ」を表示するために、フレームレイアウトを持つBaseActivityを実装すると考えました。問題はそれが再び見せられていることであり、そうでなければならないということです。アクティビティが変化している間、ウィンドウは静的でなければなりません。また、フラグメントを追加するサービス内でトランザクションマネージャを呼び出す方法もわかりません。

  3. 私は、ウィンドウマネージャにビューを添付するサービスを持っていることについてお読みになりました。この問題は、それが良いのかどうかわからないということです。

どのような考えですか?ありがとう!

+0

https://www.androidhive.info/2016/11/android-floating-widget-like-facebook -chat-head/ – Vij

+0

これは、BaseActivity単一アクティビティアプリケーションを使用することを提案しています。アクティビティの先頭にビューを表示するだけです。サービスがデータを取得し、他のタスクがアクティビティの最下部にある場合あなたの活動の上部を閉じていない....... –

答えて

1
I have one solution for that 

1. create a static variable in app 

public static Boolean isMatch=false ; 

2. either create dialog or layout that you have to show in activity and manage its show and hide. 

2. Create Thread in activity and add 1000 timer 


Thread thread= new Thread() { 

         int wait = 0; 

         @RequiresApi(api = Build.VERSION_CODES.M) 
         @Override 
         public void run() { 
          super.run(); 

           while (wait < welcomeScreenDisplay) { 
            sleep(100); 
            if(isMatch) 
              { 
             dialog.show(); 

             } 
            wait += 100; 

           } 
         }//run 
        };//welcome thread 
        t.start(); 

3. in service when the condition is true update the value of the variable 


isMatch =true ; 
0

あなたのアプリケーション用の明示的な放送受信機を宣言することができます。サービスが完了すると、自動的に親アクティビティにメッセージが送信されます。このアクティビティでは、視界が失われた上部のビューが表示され、放送の変更を受信すると、視認性

関連する問題