//===========================================================
// 스케쥴러 (모니터링) 10초마다 진행.
//============================================================
final Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
int nowpage = flipper.getDisplayedChild();
if(nowpage == 0){ //현재 페이지 따른 connection. 0:center , 1:call , 2:person, 3:system
Connect_center();
}else if(nowpage == 1){
Connect_call();
}else if(nowpage == 2){
Connect_person();
}else if(nowpage == 3){
Connect_system();
}
}
};
TimerTask myTask = new TimerTask(){
public void run(){
Message msg = mHandler.obtainMessage();
mHandler.sendMessage(msg);
}
};
Timer timer = new Timer();
@Override
public void onCreate(Bundle savedInstanceState) { //메인 함수..
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 그 외 내용. .텍스트뷰 및 등등 포함
//========================================================================================
// 백그라운드 처리 ( 플리퍼 Next 데이터 로딩 중)
//==========================================================================================
private class Next_handler extends AsyncTask<String, Integer, Long>
{
@Override
protected void onPreExecute() // 진행중 다이얼로그 박스 보여줌
{
super.onPreExecute();
showDialog(PROGRESS_DIALOG);
}
@Override
protected Long doInBackground(String...params) // 백그라운드 실제 작업 처리
{
String page = new String(params[0]);
int result = 0;
if(page.equals("center")){
Connect_center();
}else if(page.equals("call")){
Connect_call();
}else if(page.equals("person")){
Connect_person();
}else if(page.equals("system")){
Connect_system();
}else{
}
return Long.valueOf(result);
}
@Override
protected void onPostExecute(Long result) // 작업후 처리
{
super.onPostExecute(result);
progressDialog.dismiss(); // 다이얼로그 박스 삭제
int rslt = result.intValue();
if(rslt == 0){
flipper.showNext();
}
}
}
//========================================================================================
// 백그라운드 처리 ( 플리퍼 Previos 데이터 로딩 중)
//==========================================================================================
private class Previos_handler extends AsyncTask<String, Integer, Long>
{
@Override
protected void onPreExecute() // 진행중 다이얼로그 박스 보여줌
{
super.onPreExecute();
showDialog(PROGRESS_DIALOG);
}
@Override
protected Long doInBackground(String...params) // 백그라운드 실제 작업 처리
{
String page = new String(params[0]);
int result = 0;
if(page.equals("center")){
Connect_center(); // ui와 db connect 포함.
}else if(page.equals("call")){
Connect_call();
}else if(page.equals("person")){
Connect_person();
}else if(page.equals("system")){
Connect_system();
}else{
}
return Long.valueOf(result);
}
@Override
protected void onPostExecute(Long result) // 작업후 처리
{
super.onPostExecute(result);
progressDialog.dismiss(); // 다이얼로그 박스 삭제
int rslt = result.intValue();
if(rslt == 0){
flipper.showPrevious();
}
}
}
}
아침에 가르쳐 주신 대로 어싱크 태스크를 사용하여 구현했습니다. 잘되는 가 싶더니 어느 순간....
06-08 05:26:25.082: WARN/System.err(441): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
06-08 05:26:25.082: WARN/System.err(441): at android.view.ViewRoot.checkThread(ViewRoot.java:2802)
06-08 05:26:25.092: WARN/System.err(441): at android.view.ViewRoot.invalidateChild(ViewRoot.java:607)
06-08 05:26:25.092: WARN/System.err(441): at android.widget.TextView.setText(TextView.java:2688)
이런 멘트가 계속 나오네요...ㅠㅠ
모니터링이라고 계속 해서 10초 주기로 도는데 중간에 핸들러랑 겹치게 되면 이런 현상이 일어나는건가요ㅜㅜ
아님 단순히 핸들러를 여러개 사용해서 그런가요?ㅠㅠ
방법이 없을까요???
06-08 05:44:25.702: WARN/System.err(441): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
06-08 05:44:25.712: WARN/System.err(441): at android.view.ViewRoot.checkThread(ViewRoot.java:2802)
06-08 05:44:25.712: WARN/System.err(441): at android.view.ViewRoot.invalidateChild(ViewRoot.java:607)
06-08 05:44:25.712: WARN/System.err(441): at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:633)
06-08 05:44:25.722: WARN/System.err(441): at android.view.ViewGroup.invalidateChild(ViewGroup.java:2505)
06-08 05:44:25.722: WARN/System.err(441): at android.view.View.invalidate(View.java:5139)
06-08 05:44:25.722: WARN/System.err(441): at android.widget.TextView.checkForRelayout(TextView.java:5356)
06-08 05:44:25.722: WARN/System.err(441): at android.widget.TextView.setText(TextView.java:2688)
06-08 05:44:25.722: WARN/System.err(441): at android.widget.TextView.setText(TextView.java:2556)
06-08 05:44:25.722: WARN/System.err(441): at android.widget.TextView.setText(TextView.java:2531)
06-08 05:44:25.722: WARN/System.err(441): at com.app.main.Main.Call_print(Main.java:1258)
06-08 05:44:25.722: WARN/System.err(441): at com.app.main.Main.Connect_call(Main.java:611)
06-08 05:44:25.722: WARN/System.err(441): at com.app.main.Main$Button_handler.doInBackground(Main.java:1574)
06-08 05:44:25.732: WARN/System.err(441): at com.app.main.Main$Button_handler.doInBackground(Main.java:1)
06-08 05:44:25.732: WARN/System.err(441): at android.os.AsyncTask$2.call(AsyncTask.java:185)
06-08 05:44:25.732: WARN/System.err(441): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
06-08 05:44:25.732: WARN/System.err(441): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
06-08 05:44:25.732: WARN/System.err(441): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
06-08 05:44:25.732: WARN/System.err(441): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
06-08 05:44:25.732: WARN/System.err(441): at java.lang.Thread.run(Thread.java:1096)
풀 로그 입니다..ㅠㅠ




로그가 저게 다인가요..??아닌거 같은데요;;