2017-03-09 77 views
1

作爲Android編程的初學者,我並沒有真正掌握使用線程和處理函數的功能。點擊一個按鈕後,我想調用第一個方法startProjection()然後等待幾秒鐘後再調用第二個方法stopProjection()。如何等待按鈕單擊後執行操作?

通過閱讀關於這個問題的一些話題,我建立了這個代碼,能夠執行第一個呼叫,但不是第二:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // some code 

    // start projection 
    Button startButton = (Button) findViewById(R.id.startButton); 
    startButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      startProjection(); 

      Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       public void run() { 
        stopProjection(); 
       } 
      }, 7000); 
     } 
    }); 

構建搖籃正常工作,但是當我終於按一下按鈕沒有任何反應。看來,處理程序無法正常工作。無論如何要執行這些操作onClick()方法相同的

編輯:以前這兩種方法被分別叫做使用兩個按鈕購買(它工作!),但我真的很想使用一個按鈕。

+0

此代碼是正確的,你的錯誤是什麼? – Stefan

+1

** Handler handler = new Handler(),每次onClick()調用**可能會在每次按鈕點擊時爲您分配一個新的Handler。讓一個Handler成爲一個全局變量?看到你在這種情況下的差異? – ShayHaned

+0

當** stopProjection()**方法結束時,應用程序自行關閉,並且Android監視器上顯示以下消息: E/JavaBinder:!!!失敗的粘合劑交易!!! W/MediaProjectionManagerService:無法通知媒體投影已停止 –

回答

0

我只是想檢查你是否有任何特定的原因在一個單獨的線程中有stopProjection()函數。可能是以下可能工作正常:

startProjection(); 
Thread.sleep(7000); 
stopProjection(); 
+0

我已經試過這個,但是每次發生UnhandledExceptionEventHandler錯誤。 –

相關問題