JavascriptProva

venerdì 11 novembre 2016

Come terminare una Activity e rimuoverla dai Recent Tasks.

A questo punto, le cose da fare sono diverse.
Per prima cosa, terminare la schermata iniziale.
Ho aggiunto un'altra voce nel menu:
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/stopTimer"
        android:title="Stop Timer">

    </item>
    <item
        android:id="@+id/showSettings"
        android:title="Impostazioni" >
    </item>
    <item
        android:id="@+id/terminaSchermata"
        android:title="Nascondi" >
    </item>
</menu> 
E la gestisco con questo codice:
    @Override
    public boolean onOptionsItemSelected(MenuItem menuItem){
        switch(menuItem.getItemId()){
            case R.id.stopTimer:
                cancellaTimer();
                break;
            case R.id.showSettings:
                cancellaTimer();;
                Intent i=new Intent(MainActivity.this,Settings.class);
                startActivity(i);
                break;
            case R.id.terminaSchermata:
                    finish();
            }
                
        }
        return true;
    }
Però mi rimane nei recent tasks.
E' già impostato nel manifest autoRemoveFromRecents:
        <activity
            android:name=".Lista"
            android:autoRemoveFromRecents="true"
            android:screenOrientation="portrait" /> 
Ma, come ho imparato, nelle versioni superiori a 21 è necessario usare, per terminare e rimuovere dai recenti, finishAndRemoveTasks.
Lo uso e ottengo errore perché l'applicazione è indirizzata anche a versioni più antiche della 21.
Per far ciò, trovo il codice che adatta l'istruzione alla versione:
            case R.id.terminaSchermata:
                if(Build.VERSION.SDK_INT>=21){
                    finishAndRemoveTask();
                }else{
                    finish();
                }
E così funziona, rimuovendo completamente l'activity dai recenti una volta terminata.

Nessun commento:

Posta un commento