[ help - me ] salvar checkbox e recuperando id

Olá boa noite programadores mobile, eu sou um iniciante nessa vida de programação e estou criando um aplicação de lista de chamada para uso próprio.

Bem é o seguinte. até agora já conseguir fazer o cadastro de pessoas com um botão adicionar, quando clico no botão sobe um AlertDialog para o usuário inserir o nome do aluno e logo em seguida é criado uma checkbox com o nome mencionado.

APP(Funcionando)

CODIGO FONTE JAVA MainActivity
package br.unisantos.iampresent;

import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

private Button add;
private Button resultado;
private LinearLayout container;
private Button ok;


private static final String ARQUIVO_PREFERENCIA = "ArquivoPreferencia";


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    //Recuperando
    container = (LinearLayout) findViewById(R.id.lineCheckbox);
    add = (Button) findViewById(R.id.btnAdd);
    resultado = (Button) findViewById(R.id.btnResultado);
    ok = (Button) findViewById(R.id.btnOk);



    add.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            exibirMensagemEdt("Novo Aluno(New Student)", "Adicionar novo aluno, click ok", container);
        }
    });



}


public void exibirMensagemEdt(String titulo, String texto, final LinearLayout frameLayout){

    AlertDialog.Builder mensagem = new AlertDialog.Builder(MainActivity.this);
    mensagem.setTitle(titulo);
    mensagem.setMessage(texto);
    // DECLARACAO DO EDITTEXT
    final EditText input = new EditText(this);
    mensagem.setView(input);
    mensagem.setNeutralButton("OK", new DialogInterface.OnClickListener() {

        public void onClick(DialogInterface dialog, int which) {

            if (input.getText().toString().isEmpty()) {
                Toast.makeText(getApplicationContext(), "Texto em Branco",
                        Toast.LENGTH_SHORT).show();
            } else {
                criarNovoAluno(frameLayout, input.getText().toString());
                Toast.makeText(getApplicationContext(), input.getText().toString().trim(),
                        Toast.LENGTH_SHORT).show();
            }
        }

    });

    mensagem.show();
    // FORÇA O TECLADO APARECER AO ABRIR O ALERT
    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);




}

public void criarNovoAluno(LinearLayout frameLayout, String texto){

    List <Aluno> listaAlunos;
    listaAlunos = new ArrayList<Aluno>();

    Aluno newAluno = new Aluno();

    newAluno.nome = "Jose";

    listaAlunos.add(newAluno);


    //Criando um botão passando o contexto
    CheckBox aluno = new CheckBox(this);
    aluno.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    aluno.setText(texto);
    aluno.setTextSize(30);
    //Espaçamento
    aluno.setPadding(5, 5, 5, 5);

    //Log.i("COD ID", aluno.getId( ));

    //Adicionando o botão na tela
    frameLayout.addView(aluno);

}

}

Bom minha dúvida é o seguinte,
1° como irei salvar esses checkbox (Para quando eu fecha o aplicativo e abrir novamente não precisar add todo mundo)
2 ° Como irei recuperar o id do checkbox(Os checkbox estou criando via código java, dentro de um container de linerLayout)
3° Como é uma chamada gostaria que fosse acrescentado 1 presença para cada “CheckBox” Selecionado e gostaria de recuperar em outra activity que será puxada pelo botão Resultado.

Desde já agradeço as resposta. meu ultimo pedido é quem estiver tempo, e puder me ajudar a acabar essa aplicação pode está me chamando no Skype: anjunior98@outlook.com (Vou deixar open source).

Obrigado.
Antonio