늘 알려주는 놈은 그냥 화면 돌리는걸 막으라 하던데 그건 싫고


지금 스레드 돌리는 구조가


abstract class NetConnect

{

abstract void run();

}


class ConnectionQueue

{

private static BlockingQueue<NetConnect>queue;

class CThread extends Thread

{

//run시 queue에서 내용물꺼내서 connect.run시킴

}

static  void AddRequset(NetConnect) //queue에 추가

}


이런 식이였는데 이걸


class ConnectionQueue

{

//Key = enum, Fragment별로 Key값을 다르게 지정

private static HashMap<Key,BlockingQueue<NetConnect>>queue;

class CThread extends Thread

{

//run시 현재 Key에 맞는 큐 꺼내서 실행하고 Key값을 다음 Key값으로.

}

static  void AddRequset(Key,NetConnect) //queue에 추가

static BlockingQueue<T extend NetConnect>GetRequest(Key)//현재 실행하지않은 남은 명령목록을 반환

}


이렇게 바꿔서 SaveInstanceState 할때 남은 명령 목록 받아온뒤에 번들에 집어넣고 복원하면 어떻게 될거같기도함. 


텍스트뷰에 1초마다 1씩 증가하는 멤버 int 변수 찍는 NetConnect 1000개 담아서 보냈다가 화면 돌릴때 저 방식으로 해보니 그대로 이어지더라




근데 문제는 이거 



{A,B,C,D,E,F,G}라는 실행해야할놈이 있다 치고, 동시에 3개를 돌릴수있다침.


A,B가 끝났고, C,D,E가 실행중인 상태에서 반환요청을 때리면 F,G는 반환되는데 C,D,E를 반환할방법이 뾰족하지가 않네 (실험안해봤지만 실행시간 긴 함수 쓰면 대충 저럴거같음)


현재 실행중인 놈만 담는 HashMap을 하나 더 만들어서 그것도 함께 담아 반환하는방식을 쓰면 되려나