私が作成している UI にはボタンが含まれており、これは一度押されると、ユーザーがボタンを再度押すまで繰り返し値を見つけて表示することになっています。
これは、リスナーを使用したボタンの初期化です。
pollOn = false;
pollButton = (Button) findViewById( R.id.pollButton );
pollButton.setOnClickListener( new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i( "POLL BUTTON", "onClick" );
if( !pollOn ) {
Log.i( "POLL BUTTON", "!pollOn" );
pollOn = true;
methodToReadAndDisplayData();
} else {
Log.i( "POLL BUTTON", "else pollOn" );
pollOn = false;
}
}
});
読みやすくするためにここには示していませんが、私が現在動作させている方法はmethodToReadAndDisplayData()
、for ループで 5 回呼び出してから停止することです。
pollButton
そのため、最初に を押すと、UI がフリーズLog.i("POLL BUTTON", "onClick")
して の上部に表示されますLogCat
。次に、フリーズしているように見える間に を押しpollButton
ます。すべての作業が完了し、UI がフリーズしなくなると、 のLog.i("POLL BUTTON", "onClick")
最後に が表示されLogCat
ます。私がこれを解釈している方法は、ボタンのクリックがキューに入力されonClick
、for ループの 5 回の反復がすべて完了した後にメソッドが呼び出されるということです。
この問題のもう 1 つの大きな部分は、行われている作業が主にネイティブ ライブラリで行われており、NDK を使用して呼び出されていることです。これが UI のフリーズと関係があるかどうかはわかりませんが、必要な処理時間が増加することは間違いありません。
不明な点やわかりにくい点がありましたらお知らせください。明確にするよう努めます。
この状況に関する情報をいただければ幸いです。