AsyncTask非同期処理が終了した、終了した後の処理がしたいとき用にコールバック機能を製造します。
技術者さんが作成されたものの引用ですが、元ネタが見つからないため、備忘録として投稿します。
プログラム
AsyckTaskを継承したクラス
public class AsyncTaskClass extends AsyncTask<Void, Void, String> {
    private CallBackTask callbacktask;
	
	@Override
	protected void onPreExecute() {
		super.onPreExecute();
	}
	
	
	@Override
	protected String doInBackground(Void... params) {
		String result = null;		
		return result;
	}
	
	@Override
	protected void onPostExecute(String result) {
		super.onPostExecute(result);
		callbacktask.CallBack(result);
	}
	
	
	public void setOnCallBack(CallBackTask _cbj) {
        callbacktask = _cbj;
    }
	
	
	/**
	 * コールバック用のstaticなclass
	 */
	public static class CallBackTask {
        public void CallBack(String result) {
        }
    }
}
使用するActivityクラスでインスタンス化とsetOnCallBackメソッドを生成します。
MainActivity.class
public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
        AsyncTaskClass atClass = new AsyncTaskClass();
        atClass.setOnCallBack(new CallBackTask(){
			@Override
			public void CallBack(String result) {
				super.CallBack(result);
                // ※1
                // resultにはdoInBackgroundの返り値が入ります。
                // ここからAsyncTask処理後の処理を記述します。
                Log.i("AsyncTaskCallback", "非同期処理が終了しました。");
			}
			
		});
        // AsyncTaskの実行
        atClass.execute();
	}
}
非同期処理が終了したら※1にある処理が作動します。