With the rapid development of smartphones, Android plays an important role. The setting of virtual buttons greatly improves the user experience. The setting of the virtual back key also replaces the use of the physical keyboard. However, there are always advantages and disadvantages in everything. Although the design of virtual keys improves the user experience, there are also misoperations. On the first page of the application, click back, which may cause the program to exit. Here, we can take the optimizations made by common apps for this situation.
When you click the back button on the first page of the application, there are two common methods to prompt
1) Use the pop-up dialog box to display and click OK to exit. Click Cancel to exit.
2) use Toast to display: "click back again to exit the program", and click to exit the program immediately. If you click back later, it will display "re-Press the back key to exit the program"
For the first exit method:
1) rewrite the onKeyDown method and listen to the back click event.
2) set the pop-up dialog
Protected Dialog onCreateDialog (int id)
{
Return new AlertDialog. Builder (this). setTitle ("exit ")
. SetMessage ("exit? ")
. SetPositiveButton ("OK", new DialogInterface. OnClickListener ()
{
@ Override
Public void onClick (DialogInterface dialog, int which)
{
Finish ();
}
}). SetNegativeButton ("cancel", null). create ();
}
3) Implement showDialog (id); method; where id is of the int type, you can distinguish between different dialogs. Here there is only one dialog box, so this id is random.
For the second method:
Let's analyze it here: Click the back key, and the toast prompts "re-Press the back key to exit the program", and then immediately press the back key to exit, if you press the back key after a period of time, the toast will prompt you to "press the back key again to exit the program ". Therefore, we can set a flag to determine whether the user clicks the back key for the first time, and set a time-effectiveness for the mark. Only clicking the button within the time range will exit, after this time is exceeded, the toast prompt is displayed. The specific method is as follows:
1) set the identifier of a global variable: private boolean hasPressedBack;
2) rewrite the onKeyDown method and listen to the back click event.
3) set the timeliness for the global variable identifier. The Code is as follows:
Public boolean onKeyDown (int keyCode, KeyEvent event)
{
Switch (keyCode)
{
Case KeyEvent. KEYCODE_BACK:
If (! HasPressedBack)
{
// Press
HasPressedBack = true;
Toast. makeText (MainActivity. this, "repeat back to exit", Toast. LENGTH_SHORT). show ();
MHandler. postDelayed (new Runnable ()
{
@ Override
Public void run ()
{
HasPressedBack = false;
}
}, 3000); // used to set the timeliness of global variable labeling
// It will expire 3 seconds later.
Return true;
}
Break;
Default:
Break;
}
Return super. onKeyDown (keyCode, event );
}
In fact, such exit is not a real exit. It is just an illusion that it is closed and will not run again, will not occupy the phone or device memory.
In fact, this is because smartphone users have all transitioned from PCs, and they all feel that the application will not occupy resources until it is closed. Therefore, in order to cater to people's usage habits, android, this illusion. To achieve true exit, you need to turn off the process corresponding to the application in the mobile phone process. This is the true exit.