지금 현재 만들고자 하는 방식은 다음과 같습니다.

main thread 에서 child thread를 만듭니다.
child thread 가 실행되면 main thread는 잠시 멈춥니다. (code 상으로 진행 중지)
child thread 에서 Dialog를 하나 띄웁니다.
child thread 에서 뜬 dialog 의 버튼을 누르면 child thread는 죽고 main thread는 다시 동작됩니다.

이런 걸 만들려고 합니다.

public class JSPermission extends Activity {
private Thread child;
private Handler mChildHandler;
public int getPerm() {
child = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Looper.prepare();
mChildHandler = new Handler() {
public void handleMessage(Message msg) {
Thread.currentThread().setName("Child");
if(msg.arg1 == 0) {
showDialog();
}
else if(msg.arg1 == 1){
mChildHandler.getLooper().quit();
}
}
};
Looper.loop();
}
});
child.start();

Message msg = mChildHandler.obtainMessage();
msg.arg1 = 0 ;
mChildHandler.sendMessage(msg);

try {
child.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rValue ;
}
public void showUI() {
AlertDialog.Builder adb = new AlertDialog.Builder(mContext);
adb.setTitle("Connect");
adb.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialoginterface, int i) {
// TODO Auto-generated method stub
Message msg = mChildHandler.obtainMessage();
msg.arg1 = 1 ;
mChildHandler.sendMessage(msg);
}
});
adb.show();
}
}

위와같이 짜보았습니다.
1) Dialog를 Child Thread에서 띄울 경우, Handler를 이용해야 한다길래 저렇게 해보았는데 저렇게 띄우는 것이 맞는가요?
-> 뜨긴 뜹니다.

2) dialog button 을 누를 경우 child Thread를 죽이기 위해 mChildHandler.getLooper().quit(); 가 수행되는데,
정상적으로 child Thread는 죽지만, 현재 액티비티 상에서는 Dialog가 떠있습니다.
Button이 눌려져 있는 화면으로요..
그래픽 버퍼가 업데이트 안되는 문제일까요?

thread 간의 전환을 해보려 하니 다소 머리가 아프네요.

좋은 답변 부탁드립니다.