La risposta alla tua domanda è NI....
nel senso che il bean in view scoped viene reinizializzato se:
1) Avviene una navigazione con jsf-redirect=true
2) La view che ha attualmente invocato un action oppure ha richiesto l'accesso ad un qualche proprietà del BB (metodi get) è diversa dall'ultima view che ha invocato il BB.
1)ma viene reinizializzato anche nel caso in cui la navigazione ha JSF-REDIRECT=FALSE.
2)cioè? praticamente se faccio una navigazione da una pagina verso un'altra pagina ,quest'ultima se invoca metodi sullo stesso BB che utilizzava la prima..esso viene reinizializzato... quindi dovrei effettuare la navigazione sempre sulla stessa pagina, ma non avrebbe senso... :?

ad esempio, ho 2 pagine xhtml PAGE1 e PAGE2
PAGE1:
codice:
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Really simple CRUD</title>
    </h:head>
    <h:body>
        <h:form id="form">
            <h:commandButton value="ok" onclick="#{bean.incrementa()}">
                <p:ajax event="click" update="form"/>
            </h:commandButton>
            <h:commandButton value="vai" action="page2">
            </h:commandButton>
            <h:outputText value="#{bean.value}"/>
        </h:form>
    </h:body>
</html>
PAGE2:
codice:
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>example</title>
    </h:head>
    <h:body>
        <h:form id="form">
            <H2> PAGE2 </H2>
            <h:outputText value="VALUE:#{bean.value}"/>
        </h:form>
    </h:body>
</html>
questo è il BEAN:
codice:
package bean;
import java.io.Serializable;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.ViewScoped;

@ManagedBean
@ViewScoped
public class Bean implements Serializable {

    private int value;

    /**
     * Get the value of value
     *
     * @return the value of value
     */
    public int getValue() {
        return value;
    }

    /**
     * Set the value of value
     *
     * @param value new value of value
     */
    public void setValue(int value) {
        this.value = value;
    }

    @PostConstruct
    public void init() {
        System.out.println("initttttttt");
        value = 0;
    }

    @PreDestroy
    public void fine() {
        System.out.println("SONO MORTO");
    }

    public void incrementa() {
        value++;
    }
}
e questo è FACES-CONFIG.XML:
codice:
<faces-config version="2.1"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/we...config_2_1.xsd">
    <navigation-rule>
        <from-view-id>/page1.xhtml</from-view-id>
        <navigation-case>
            <from-action>page2</from-action>
            <to-view-id>/page2.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>
Solo con la navigazione il metodo @PreDestroy viene invocato ... mentre in altri casi (ad esempio clicco su qualche link ecc ecc non viene invocato...)

JSF2 + glassfish server