我正在创建的 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 次迭代完成后调用该方法。
这个问题的另一大部分是正在做的工作主要是在一个原生库中,并且是使用 NDK 调用的。我不确定这是否与 UI 冻结有关,但它肯定会增加所需的处理时间。
如果有任何不清楚或令人困惑的地方,请告诉我,我会尽力澄清事情。
任何有关这种情况的信息将不胜感激。