Recuperar valores rotate screen com AsyncTask

Boa tarde Pessoal.
Estou tentando fazer uma recuperação de valores ao rotacionar a tela porém não estou conseguindo…
Quero fazer o seguinte: Quando entro na tela ele consome uma AsyncTask para pegar os dados de um WebService, popula alguns TextView e um ListView. Até aí está funcionando, o problema está ao rotacionar a tela. Não preciso consumir novamente, somente salvar o estado atual e popular novamente…
Estou tentando trabalhar com o onSaveInstanceState porém não está rolando…
Segue meu código aí pessoal… Muito Obrigado desde já…

public class PrincipalActivity extends AppCompatActivity implements TaskCompleteArrayList {

FragmentManager fm = getSupportFragmentManager();
AutenticarUsuario representante;
frag_principal_esquerdo leftFrag;
frag_principal_direito rigthFrag;
Double valorVendas;
private GsonArrayWrappedTask<ListarAgrupClientesTodos> taskVendas;
List<ListarAgrupClientesTodos> listaAgrupClientes;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_principal);
    Intent intent = getIntent();
    if (savedInstanceState != null)
    {
        this.listaAgrupClientes = (List<ListarAgrupClientesTodos>) savedInstanceState.getSerializable("itens");
        carregaValores(listaAgrupClientes, savedInstanceState.getDouble("vendas"), savedInstanceState.getString("usuario"));
    }
    else//if (listaAgrupClientes == null)
    {
        representante = (AutenticarUsuario) intent.getSerializableExtra("Representante");
        CarregaFragments();
        CargaDados();
    }
}
@Override
protected void onResume() {
    super.onResume();
}
private void carregaValores(List<ListarAgrupClientesTodos> listaAgrupClientes, Double vendas, String usuario) {
    leftFrag.setTxtUsuario(usuario);
    DecimalFormat df = new DecimalFormat("0.##");
    leftFrag.setTxtVendas(df.format(vendas));
    ListaClientesAdapter adapter = new ListaClientesAdapter(PrincipalActivity.this, listaAgrupClientes);
    ListView ListViewlistaAlunos = (ListView) findViewById(R.id.lista_fragment);
    ListViewlistaAlunos.setAdapter(adapter);
}
public  void CargaDados()
{
    //region obtendo o valor de vendas
    String urlParam =  PrincipalActivity.this.getString(R.string.urlListarAgrupClientesTodos) + "01122015" + "/" + "31122015" + "/" + representante.getRepresentanteId();
    taskVendas = new GsonArrayWrappedTask<ListarAgrupClientesTodos>(PrincipalActivity.this, PrincipalActivity.this,ListarAgrupClientesTodos.class, "ListarAgrupClientesTodosResult", true, "Atualizando os dados...");
    taskVendas.execute(urlParam);
    //endregion
}
public void CarregaFragments()
{
    leftFrag = new frag_principal_esquerdo();
    rigthFrag = new frag_principal_direito();
    FragmentTransaction ft = fm.beginTransaction();
    ft.replace(R.id.layout_esquerdo, leftFrag, "leftFrag");
    ft.replace(R.id.layout_direito, rigthFrag, "rigthFrag");
    ft.commit();
}
@Override
public void onTaskCompleteArrayList(List result) {
    if (result == null)
    {
        MessageUtil.addMsgOk(PrincipalActivity.this, "OncoSales Mobile", "Erro ao obter dados. Verifique a conexão de rede.", R.drawable.delete);
    }
    else
    {
        List<ListarAgrupClientesTodos> listaAgrupClientes = (ArrayList<ListarAgrupClientesTodos>) result;
        valorVendas = 0.00;
        for(int j=0; j<listaAgrupClientes.size(); j++){
            try
            {
                valorVendas += Double.parseDouble(listaAgrupClientes.get(j).getClienteTotalFat());
            }
            catch (Exception e) {
                MessageUtil.addMsgOk(PrincipalActivity.this, "OncoSales Mobile", e.getMessage(), R.drawable.delete);
            }
        }
        this.carregaValores(listaAgrupClientes, valorVendas, representante.getUsuarioNome());
    }
}
@Override
public void onTaskException(Exception e) {
    MessageUtil.addMsgOk(PrincipalActivity.this, "OncoSales Mobile", "Erro ao obter dados. Verifique a conexão de rede.\n" + e.getMessage(), R.drawable.delete);
}
@Override
public OncoSalesAndroidApplication getOncoSalesAndroidApplication() {
    return (OncoSalesAndroidApplication) getApplication();
}
@Override
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
    super.onSaveInstanceState(outState, outPersistentState);
    final TextView textbox = (TextView) findViewById(R.id.txtVendas);
    //outState.putCharSequence("usuario", representante.getUsuarioNome());
    outState.putCharSequence("usuario", textbox.getText());
    outState.putDouble("vendas", valorVendas);
    outState.putSerializable("itens", (ArrayList<ListarAgrupClientesTodos>) this.listaAgrupClientes);
}

}

Eric, tudo bem ?

Usa o método onSaveInstanceState(Bundle outState) invés do que recebe esse segundo parametro PesistableBundle.

Para resgatar os valores que você colocou usa o onRestoreInstanceState(Bundle bundle) , nele você apenas vai ter que colocar os valores que você pendurou no bundle e settar os campos novamente !

Espero ter ajudado !