CheckBox salvar e carregar estados

Estou com problemas para salvar e carregar os estados dos checkbox. Gostaria de saber como posso salvar os estados e depois carregar novamente. Tem algum método pra fazer isso?

`

private ArrayList<TaskList> listaTarefa = new ArrayList<TaskList>();

private TaskDAO dbta;
private ListAdapter listAdpt;
private String sql; 


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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
	getMenuInflater().inflate(R.menu.main, menu);
	return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
	int id = item.getItemId();
	if (id == R.id.action_add_task) {
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
		builder.setTitle("Add a task");
		builder.setMessage("What is your task?");
		final EditText inputField = new EditText(this);
		builder.setView(inputField);
		builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialogInterface, int i) {
				String task = inputField.getText().toString();

				dbta = new TaskDAO(MainActivity.this);
				
				SQLiteDatabase db = dbta.getWritableDatabase();
				ContentValues values = new ContentValues();

				values.clear();
				values.put(Database.Columns.TASK,task);

				db.insertWithOnConflict(Database.TABLE,null,values,SQLiteDatabase.CONFLICT_IGNORE);
				updateUI();
			}
		});

		builder.setNegativeButton("Cancel",null);

		builder.create().show();
		return true;
	}	
	return super.onOptionsItemSelected(item);
}

public void deleteTask(View view){
	View v = (View) view.getParent();
	TextView taskTextView = (TextView) v.findViewById(R.id.TextView);
	String task = taskTextView.getText().toString();
	
	sql = String.format("DELETE FROM %s WHERE %s = '%s'",
			Database.TABLE, Database.Columns.TASK,task);
	
	AlertDialog.Builder builder = new AlertDialog.Builder(this);
	builder.setTitle("Remove a task");
	builder.setMessage("Want to remove '"+ task+"' ?" );
	builder.setPositiveButton("Remove", new DialogInterface.OnClickListener() {
		@Override
		public void onClick(DialogInterface dialogInterface, int i) {
			dbta = new TaskDAO(MainActivity.this);
			SQLiteDatabase sqlDB = dbta.getWritableDatabase();
			sqlDB.execSQL(sql);
			updateUI();
		}
	});

	builder.setNegativeButton("Cancel",null);

	builder.create().show();
	
}

private void updateUI(){
	dbta = new TaskDAO(MainActivity.this);
	SQLiteDatabase sqlDB = dbta.getReadableDatabase();
	Cursor cursor = sqlDB.query(Database.TABLE,
					new String[]{Database.Columns.ID,Database.Columns.TASK, Database.Columns.DONE},
					null, null, null, null, null);
	
	listAdpt = new SimpleCursorAdapter(this, R.layout.new_task,
				cursor,	new String[]{Database.Columns.TASK, Database.Columns.DONE},
				new int[]{R.id.TextView}, 0);
	
	this.setListAdapter(listAdpt);
}

`

Se precisar depois eu coloco as outras classes.