0

我們從啓動服務的活動開始,然後變爲空閒狀態,直到服務再次調用活動爲止。該活動去onPause(我相信),並不會開始備份,直到其BroadcastReceiver獲得其呼叫開始。我的服務創建一個WindowManager作爲系統覆蓋層,當用戶觸發它時,它應該調用該活動並使活動創建一個新的視圖,其中包含一些內容。那麼一切都會順利進行,沒有錯誤彈出窗口,我的所有日​​志都表明代碼運行順利,但應該做出的新視圖永遠不會被看到。有趣的是,如果你點擊應用程序重新啓動它,彈出我以前想要的視圖。所以我很好奇,爲什麼它不會在我想要的時候發生,但是它仍然是不可見的。我已經嘗試將視圖設置爲可見,嘗試bringToFront(),我甚至嘗試了一些標誌意圖將活動帶到棧頂,但沒有任何工作。相關代碼如下。在製作WindowManager之後使用setContentView()問題

我不是在這裏聽說爲什麼你不認爲我的應用程序對用戶有好處,或者你不認爲它遵循android設計「設計」我只是想幫助調試這個有趣的錯誤。

MainActivity

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Intent intent = new Intent(MainActivity.this, MyService.class); 
     startService(intent); //if i comment out these lines and add the call 
     initService(); //to figureOutParam below it works perfectly 
     sendUserHome(); //this one as well 
     figureOutParam("UPDATE",0); //this is the call that i use to get through to 
         //the method though right now neither param is important 
    } 


    public void figureOutParam(String param, int top){ 

     if(param.equals("UPDATE")){ 

      View myView = new View(this); 

      LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); 
      myView = inflater.inflate(R.layout.activity_main, null); 
      myView.setBackgroundColor(Color.BLUE); 
      myView.bringToFront(); 

      setContentView(myView); 
     } 
    } 

爲MyService(涉及回調到服務只重要的部分)

@Override 
    public void onCreate() { 
     super.onCreate(); 

     WindowManager window = (WindowManager)getSystemService(Context.WINDOW_SERVICE); 
     Display d = window.getDefaultDisplay(); 
     int width=d.getWidth(); 
     int height=d.getHeight(); 
     height= (int)(height*.025); 


     params = new WindowManager.LayoutParams(WindowManager.LayoutParams.FILL_PARENT,height, 
       WindowManager.LayoutParams.TYPE_PHONE, 
       WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL| 
       WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | 
       WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, 
       PixelFormat.TRANSLUCENT); 
     params.gravity=Gravity.BOTTOM; 
    wm = (WindowManager) getSystemService(WINDOW_SERVICE); 

    } 

    public void updateView(String params){ 
      Intent i = new Intent(MY_INTENT); 
      i.putExtra("y", this.y); 
      i.putExtra("param", params); 
      sendBroadcast(i); 
     } 

清單,因爲,因爲

回答

0

嘗試在super.onCreate(savedInstanceState);之後插入figureOutParam("UPDATE",0);

+0

而這個調用將工作,我不想訪問figureOutParam,直到它從服務調用。和它的問題是,當服務調用它時,一切順利,但我在figureOutParam中的視圖不可見(即使我將它設置爲可見並將其設置爲bringToFront())。所以是的,這將工作,但它不會幫助我的代碼 –

相關問題