Intro 화면을 보여주는  액티비티가 있습니다.()

onCreate에서 대충 이정도의 메소드를 호출해주고 있는데요

//네트워크 체크
networkCheck();
//유심 체크
USIMcheck();
//GPS 체크
GPScheck();
// db 초기화
isExistDB();
//App 버전체크
versionCheck();

 

예를 들어 versionCheck() 메서드에서 Fail이되면 AlertDialog로 보여주고 URL로 보내게 되어있습니다.

앱 기동시 Fail이 났음에도 불구하고 바로 다음 체크 메서드를 타버려서 인터넷이 뒤로 깔리게 되네요..

쓰레드를 사용해서 해야하는건지 감이 잘안옵니다. 고수님들의 구원의 손길 기다리겠습니다..ㅠ

소스 첨부합니다.

 

 

public class AnymediaStartup extends Activity {

 private Context    mContext     = null;
 private Handler    mHandler     = new Handler();
 private Thread     mThread      = null;
 
 private AlertDialog.Builder mAb       = null;
 private TextView    mTv_IntroMsg    = null;
 private boolean    mB_ExistOBUInfo    = false;  //저장된 OBU 정보가 있으면 T
 private boolean    mB_NeedUpdateTallingZone = true;   //톨링존 정보 업데이트가 필요하면 T

 private int   mCount       = 0;
 private boolean  fromOnCreate    = true;   //onCreate()가 끝나고 진입했을 때만 T
 
 private static final String  TAG = "AnymediaStartup";
 
 private static final int   REQUEST_CODE_PROVIDER_SETTINGS_LOCATION = 1000;
 private static final int   REQUEST_CODE_UPDATE_TO_PLAY_STORE = 1001;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Log.v("hgkim", "AnymediaStartup onCreate()");
  mContext = getApplicationContext();
  setContentView(R.layout.intro);

  mTv_IntroMsg = (TextView) findViewById(R.id.tv_intro_msg);
  Utils.setTypeFace(mContext, mTv_IntroMsg);
  
  mThread = new Thread(new Runnable() {
   @Override
   public void run() {
    //네트워크 체크
    networkCheck();
    //유심 체크
    USIMcheck();
    //GPS 체크
    GPScheck();
    // db 초기화
    isExistDB();
    //App 버전체크
    versionCheck();
    //OBU 체크
    OBUCheck();
    //톨링존 정보 체크
    tallingZoneCheck();
    startUp();
   }
  });
  mThread.start();
  
  
 }
 
 @Override
 protected void onResume() {
  super.onResume();
  Log.v("hgkim", "AnymediaStartup onResume() mCount: " + ++mCount);
  
  //onCreate()에서 넘어왔는지, 다른화면에서 돌아왔는지
  if(fromOnCreate){
   fromOnCreate = false;
  }
 }

 @Override
 protected void onPause() {
  super.onPause();
  Log.v("hgkim", "AnymediaStartup onPause()");
 }

 @Override
 protected void onStop() {
  super.onStop();
  Log.v("hgkim", "AnymediaStartup onStop()");
 }

 @Override
 protected void onDestroy() {
  super.onDestroy();
  Log.v("hgkim", "AnymediaStartup onDestroy()");
 }
 
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  Log.v("hgkim", "AnymediaStartup onActivityResult() requestCode: " + requestCode + " resultCode: " + resultCode);
  
  if(requestCode == REQUEST_CODE_PROVIDER_SETTINGS_LOCATION) {
   //TODO flow잡아야함..

  } else if(requestCode == REQUEST_CODE_UPDATE_TO_PLAY_STORE) {
   //TODO flow잡아야함..
   finish();
  }
 }
 
 private void networkCheck() {
  Log.i("hgkim", "AnymediaStartup networkCheck()");
  mTv_IntroMsg.setText("네트워크를 체크 중 입니다.");
  if(!Utils.isNetworkON(mContext)){
   mAb = new AlertDialog.Builder(this);
   mHandler.post(new Runnable() {
    @Override
    public void run() {
     mAb.setTitle("네트워크 에러")
     .setMessage("네트워크 연결 상태를 확인해 주세요")
     .setPositiveButton("확인", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
       dialog.dismiss();
       finish();
      }
     }).create().show();
    }
   });
   Log.i("hgkim", "AnymediaStartup networkCheck() Fail");
  } else {
   Log.i("hgkim", "AnymediaStartup networkCheck() Pass");
  }
 }

 private void USIMcheck() {
  Log.i("hgkim", "AnymediaStartup USIMcheck()");
  mTv_IntroMsg.setText("USIM 정보를 체크 중 입니다.");
  
  if(!Utils.simCheck(mContext)){
   mAb = new AlertDialog.Builder(this);
   mHandler.post(new Runnable() {
    @Override
    public void run() {
     mAb.setTitle("USIM 에러")
     .setMessage("USIM을 확인해 주세요")
     .setPositiveButton("확인", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
       dialog.dismiss();
       finish();
      }
     }).create().show();
    }
   });
   Log.i("hgkim", "AnymediaStartup USIMcheck() Fail");
  } else {
   Log.i("hgkim", "AnymediaStartup USIMcheck() Pass");
  }
 }
 
 private void GPScheck() {
  Log.i("hgkim", "AnymediaStartup GPScheck()");
  mTv_IntroMsg.setText("GPS 설정값을 체크중 입니다.");
  
  if(!Utils.isGPSOn(mContext)){
   mAb = new AlertDialog.Builder(this);
   mHandler.post(new Runnable() {
    @Override
    public void run() {
     mAb.setTitle("GPS 설정")
     .setMessage("본 어플은 GPS를 사용하지 않으면 이용할 수 없습니다. GPS를 켜시겠습니까?")
     .setPositiveButton("확인", new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
       Intent intent = new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS);
       startActivityForResult(intent, REQUEST_CODE_PROVIDER_SETTINGS_LOCATION);
      }
     }).setNegativeButton("취소", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
       dialog.dismiss();
       finish();
      }
     }).create().show();
    }
   });
   Log.i("hgkim", "AnymediaStartup GPScheck() Fail");
  } else {
   Log.i("hgkim", "AnymediaStartup GPScheck() Pass");
  }
 }

 private void isExistDB() {
  Log.i("hgkim", "AnymediaStartup isExistDB()");
  boolean existDb = initDatabaseConfig();
  if(existDb) {
   Log.d(TAG+">>existDb", String.valueOf(existDb));
   Log.i("hgkim", "AnymediaStartup isExistDB() Pass");
  } else {
   mAb = new AlertDialog.Builder(this);
   mHandler.post(new Runnable() {
    @Override
    public void run() {
     mAb.setTitle("DB 에러")
     .setMessage("DB 초기화에 실패하엿습니다.")
     .setPositiveButton("확인", new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int which) {
       dialog.dismiss();
       finish();
      }
     }).create().show();
    }
   });
   Log.i("hgkim", "AnymediaStartup isExistDB() Fail");
  }
 }

 protected void versionCheck() {
  Log.i("hgkim", "AnymediaStartup versionCheck()");
  mTv_IntroMsg.setText(R.string.intro_msg1);
  
  String anyconfig = "any.config";
  String ANYMEDIA_VERSION_SERVER = "1.2";   //서버 버전
  String ANYMEDIA_VERSION_PREF = null;    //sp에 저장되어있는 현재 버전
  PrefManager pf = new PrefManager(this, anyconfig);

  if((ANYMEDIA_VERSION_PREF = pf.getPreferences("ANYMEDIA_VERSION")) != null) {  //최초실행X
   if(ANYMEDIA_VERSION_SERVER.equals(ANYMEDIA_VERSION_PREF)){    //최신버전O
    Log.d("VERCHK","current version:"+ANYMEDIA_VERSION_SERVER);
    Log.i("hgkim", "AnymediaStartup versionCheck() already recently version");

   } else {  //최신버전X
    mAb = new AlertDialog.Builder(this);
    mHandler.post(new Runnable() {
     @Override
     public void run() {
      mAb.setTitle("업데이트")
      .setMessage("최신버전으로 업데이트 하시겠습니까?")
      .setPositiveButton("확인", new DialogInterface.OnClickListener() {
       public void onClick(DialogInterface dialog, int which) {
        Log.d("VERCHK","go google~");
        Log.i("hgkim", "AnymediaStartup versionCheck() go google store");

        Uri uri = Uri.parse("http://www.google.co.kr");  //dummy data
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        startActivityForResult(intent, REQUEST_CODE_UPDATE_TO_PLAY_STORE);
       }
      }).setNegativeButton("취소", new DialogInterface.OnClickListener() {
       @Override
       public void onClick(DialogInterface dialog, int which) {
        Log.i("hgkim", "AnymediaStartup versionCheck() nagative update");

        dialog.dismiss();
        finish();
       }
      }).create().show();
     }
    });
    pf.putPreferences("ANYMEDIA_VERSION", null);  //업데이트를 눌렀으므로 버전정보를 지워둔다

   }
  } else {  //버전정보가 SP에 없을때
   try {
    PackageInfo info = getPackageManager().getPackageInfo(getPackageName(), 0);
    String manifestVersion = info.versionName;
    pf.putPreferences("ANYMEDIA_VERSION", manifestVersion);
   } catch (NameNotFoundException e) {
    e.printStackTrace();
   }
   Log.i("hgkim", "AnymediaStartup versionCheck() not exist preference");
  }
 }

 protected void OBUCheck() {
  Log.i("hgkim", "AnymediaStartup OBUCheck()");
  mTv_IntroMsg.setText(R.string.intro_msg2);

  OBUDAO odao = new OBUDAO(this);
  if(odao.getRowCount() > 0) // cnt > 0 && 단말기발급id 있을경우
   mB_ExistOBUInfo = true;

  if(!mB_ExistOBUInfo) {
   mHandler.post(new Runnable() {
    @Override
    public void run() {
     mTv_IntroMsg.setText(R.string.intro_msg2_1);
    }
   });
   Log.i("hgkim", "AnymediaStartup OBUCheck not exist");
   
   Intent intent = new Intent(mContext, StartupCarRegistrationActivity.class);
   intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
   startActivity(intent);
   finish();
   Log.i("hgkim", "AnymediaStartup OBUCheck() Fail");
  } else {
   Log.i("hgkim", "AnymediaStartup OBUCheck() Pass");
  }
 }

 protected void tallingZoneCheck() {
  Log.i("hgkim", "AnymediaStartup tallingZoneCheck()");
  mTv_IntroMsg.setText(R.string.intro_msg3);

  if(mB_NeedUpdateTallingZone) {
   Log.i("hgkim", "AnymediaStartup tallingZoneCheck need update");
   mTv_IntroMsg.setText(R.string.intro_msg4);
   //TODO 톨링존 정보 update 모듈
  } else {
   Log.i("hgkim", "AnymediaStartup tallingZoneCheck recently tallingzone");
   mTv_IntroMsg.setText(R.string.intro_msg4_1);
  }

 }

 protected void startUp() {
  Log.i("hgkim", "AnymediaStartup startUp()");
  mTv_IntroMsg.setText(R.string.intro_msg5);
  Intent intent = new Intent(mContext, HomeActivity.class);
  Log.i("hgkim", "AnymediaStartup startUp() Complete");
  startActivity(intent);
 }

 public boolean initDatabaseConfig(){
  InitConfigDAO dao = new InitConfigDAO(this);
  return dao.isSuccessInit();
 }

}