Androidプログラミングの初心者として、私は実際にスレッドの使用を習得しておらず、Handler()の機能を習得していません。ボタンをクリックしたら、最初のメソッドstartProjection()を呼び出してから、2番目のメソッド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);
}
});
ビルドのGradleが正常に動作しますが、私は最終的には何も起こりません]ボタンをクリックしたときに。ハンドラが正しく動作しないようです。これらの操作を同じonClick()メソッドで実行するにはどうしますか?
EDIT:これまでは、2つのメソッドが別々に2つのボタンを使用して購入されていましたが、実際は1つのボタンを使用したいと考えています。
このコードは正しいですが、あなたのエラーは何ですか? – Stefan
**ハンドラハンドラ=新しいハンドラ()は、すべてのonClick()コール**でボタンをクリックするたびに新しいハンドラを割り当てます。ハンドラをグローバル変数にするあなたはその場合に得られる違いを見ますか? – ShayHaned
** stopProjection()**メソッドが終了すると、アプリは自動的に終了し、Androidモニターに次のメッセージが表示されます。 E/JavaBinder:!!! FAILED BINDER TRANSACTION !!! W/MediaProjectionManagerService:メディア投影の通知に失敗しました –