Bene, allora hai bisogno di una funzione che ritorni True solo quando tutte le WV (qualunque sia il loro numero) siano posizionate sulla pagina più remota di cui dispongono.
Immaginiamo che si chiama Ready2Finish e, come detto ritorni un boolean: False se almeno una WV ha ancora pagine da scorrere all'indietro e True se tutte le WV sono sulla propria pagina più remota nella history di navigazione.
A quel punto, nel codice segnalato da Erel, aggiungi il check su Ready2Finish, qualcosa tipo:
Sub Activity_KeyPress (KeyCode As Int) As Boolean
If KeyCode = KeyCodes.KEYCODE_BACK Then
'se non ha più nulla da navigare mostra la richiesta di termine, altrimenti gestisce il tasto Back in modo standard
if Ready2Finish then
openMsgBox
return true
else
return false
end if
else
return false
end if
End Sub
Sub openMsgBox
Msgbox2Async("Do you need to click in the button!","Interruped", "Continue", "Cancel", "", Null, True)
Wait For Msgbox_Result (Result As Int)
If Result=DialogResponse.POSITIVE Then
Activity.Finish
end if
End Sub
In pratica, mentre sei su una WV, premendo Back, prima viene verificato se c'è ancora da tornare indietro nelle 8 history. Se non c'è nulla, vedi il messaggio. Se almeno una ha ancora del materiale, l'azione di Back si applica alla WV corrente (anche se non ha da navigare indietro) e l'utente dovrebbe capire (meglio se prevedi un'indicazione visiva in qualche modo) che ci sono altre WV su cui deve operare ancora con il Back.
Non so quale sia lo scopo del programma, ma da utente non mi piacerebbe l'idea di essere costretto al Back selvaggio su tutte le WV prima di poter terminare.