WebViewなどでディバイスの戻るボタンを押すとコードで指定していないのにもかかわらずgoBack()が何回も呼ばれてしまうことがありました。この時は一回目が呼ばれてから二回目が呼び出されるまでの間の時間を指定してあげると二回目からは呼ばれなくなります。
人間が使っていれば0.00数秒以内に何回も同じところが呼び出されることはまずないので、500ミリセカンド(適度に短い時間)以内に再び呼ばれたコードは読み込まないように指定してあげると解決しそうです。
static long FirstClick;
WebView webview;
@Override
public void onBackPressed(){
if(FirstClick + 500 > System.currentTimeMillis()){
//500ミリセカンド以内に二回呼ばれている
}else{
//一回目もしくは時間を開けてもう一度押されている
webview.goBack();
FirstClick = System.currentTimeMillis();
return;
}
super.onBackPressed();
}
FirstClickはelse節の最後で指定されるまでは初期値の0なので、一度目に呼ばれた時のif(FirstClick + 500 > System.currentTimeMillis())内は必ずfalseになります。二回目は(500(millisecond)>10:00:00:01-10:00:00:00)といったような形で計算されるのでもし間隔が十分になかった場合は何も起動しません。