늘 알려주는 놈은 그냥 화면 돌리는걸 막으라 하던데 그건 싫고
지금 스레드 돌리는 구조가
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을 하나 더 만들어서 그것도 함께 담아 반환하는방식을 쓰면 되려나
configChanges가 화면 돌리는 걸 막는 건 줄 아냐? 화면 돌릴 때 액티비티 리셋 안 되게 하는 건데
오리엔테이션 이야기하길래 화면 돌리는거 막는줄 알앗지
지금 뒤져보니 진짜네 허미
강제종료 될 때 복구하는 거 하려면 지금 건드리고 있는 놈 구현해야 되는 거긴 한데 안드 앱 중에 실제로 강제 종료됐을 때 복구되는 놈이 얼마나 되려나