У меня есть ошибка в моем приложении, она выглядит очень странно, но ее легко воспроизвести.
Попробуйте этот код для действия:
public int myIncrement = 0;
protected Dialog onCreateDialog(int i, Bundle args)
{
if (i == DIALOG_TEST_MY_BUG)
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Test");
builder.setNegativeButton("Test", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
Log.i("Test", "<- myIncrement : " + myIncrement);
for (int i = 0; i < 1000000; i++)
myIncrement ++;
Log.i("Test", "-> myIncrement : " + myIncrement);
}
}
}
}
Когда вы показываете это диалоговое окно,все нормально.Когда вы нажимаете на кнопку «Тест», все в порядке.Журнал показывает:
<- myIncrement : 0
-> myIncrement : 1000000
Но если вы несколько раз нажмете кнопку «Тест», onClickListener будет вызываться 2 или более раз:
<- myIncrement : 0
-> myIncrement : 1000000
<- myIncrement : 1000000
-> myIncrement : 2000000...
Здесь этот пример простопозвольте вам понять мою проблему.Эквивалент
for (int i = 0; i < 1000000; i++)
myIncrement ++;
- это длительная обработка с записью файлов и изменением представления, а другая - с синхронизацией на сервере.Я перепробовал множество изменений, таких как изменение логического значения в методе onClick, но безуспешно.
Пожалуйста, проверьте свой ответ, прежде чем предлагать.Также попробуйте это сделать в своих приложениях. Если щелчок вызывает длительную обработку, попробуйте нажать его много раз.