作爲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()方法相同的?
編輯:以前這兩種方法被分別叫做使用兩個按鈕購買(它工作!),但我真的很想使用一個按鈕。
此代碼是正確的,你的錯誤是什麼? – Stefan
** Handler handler = new Handler(),每次onClick()調用**可能會在每次按鈕點擊時爲您分配一個新的Handler。讓一個Handler成爲一個全局變量?看到你在這種情況下的差異? – ShayHaned
當** stopProjection()**方法結束時,應用程序自行關閉,並且Android監視器上顯示以下消息: E/JavaBinder:!!!失敗的粘合劑交易!!! W/MediaProjectionManagerService:無法通知媒體投影已停止 –