일주일을 넘게 이 문제로 골머리를 썩고 있네요..

제가 만들고 있는 어플의 구조는 이렇습니다.
어플이 실행되면 메인액티비티가 생성되면서 동시에 WifiService라고 하는 서비스도 시작이 됩니다.
메인 액티비티에서 메뉴를 통해 커넥트를 시도하면, 서버와 통신을 시작하며 주기적으로 핑을 주고 받습니다.
이 상태에서 서버에서 ring이라는 신호를 보내면 어플의 서비스는 이를 감지하고 RedaytoCall이라는 메소드를 실행합니다.
이 메소드에는 callview라는 클래스를 실행하는 인텐트를 선언하고 startActivity로 callview 액티비티를 호출하는 것입니다.

그런데 문제는 ReadytoCall이라는 함수를 실행해서 이 callview라는 클래스를 불러 액티비티를 호출하는 인텐트를 선언할 때
NullpointerException이 일어납니다.

또 혹시나 해서 다른 클래스를 부르지 않는 간단한 인텐트를 선언한 뒤 startActivity를 실행할 때 마찬가지로 인텐트가 비었다고
NullpointerException을 뱉어냅니다. 바로 직전까지 인텐트에는 내용이 들어있는데..

혹시 제가 인텐트를 잘못 사용하고 있는 것일까요?




//MainActivity.java

public class MainActivity extends Activity {

   .. 중략 ..
   WifiService ws = new WifiService();
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mService = startService(new Intent(MainActivity.this,
                WifiService.class));                                                         서비스 시작
   
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, R.string.connect, menu.NONE, "Connect");
     menu.add(0, R.string.close, menu.NONE, "Close");
        return super.onCreateOptionsMenu(menu);
   }

   public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch (item.getItemId()){
      case R.string.connect:
       Log.i("menu", "Connect click");
       if(ws.startConnect()==true)                                               서버와 커넥팅 시도
        Toast.makeText(this, "connect accept!", Toast.LENGTH_SHORT).show();
       return true;
      
      case R.string.close:
       stopService(new Intent(this,
                     WifiService.class));
       System.exit(0);
       return true;     
    }
    return super.onMenuItemSelected(featureId, item);
   } 
 . 중략 ..
}

 

//WifiService.java

 .. 중략 ..

    @Override
    public void onCreate() {
        mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
        mWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
       
        receiverWifi = new WifiReceiver();
        registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        showNotification();  // Display a notification about us starting.  We put an icon in the status bar.
   }       
    
    //서버 접속 시도
    boolean startConnect(){
     
     csocket = new ClientSocket();
     
     boolean isconnect = false;
     
     try{
      if(ConnInit()==false){                        서버와 커넥트 초기화
       return false;
      }
      else
       isconnect = true;
      
      t = new GetThread(csocket);            소켓 쓰레드 생성, 시작
      timer = new Timer();
      timer.schedule(t, 15);
      }
     catch(Exception e){
      e.getStackTrace();
     }
     
     return isconnect;
    }
   
    //Connect 초기화
    public boolean ConnInit()
    {
      .. 중략..   
     return csocket.ServerConnect(ia, port);               서버와 커넥트 시작 TCP 소켓 통신 시작 (ClientSocket.java에 명시)
    }
       
    
    //메인 액션 쓰레드
    class GetThread  extends  TimerTask {
     public GetThread(ClientSocket r)
     {}
     
     public void run()
     {
      int ret_val = 0;
      
      while(true)
      {
       ret_val = csocket.CommandCheck();
       if(ret_val == 0)
       {
        return;
       }
       .. 중략 ..
       else if(ret_val == 6)
       {       
        ReadytoCall();                               //서버에서 'ring'이라는 신호가 왔을 때 ReadytoCall 메소드 실행
       }
       .. 중략 ..
    }    
    
    public void ReadytoCall()
    {
     Intent intent = new Intent(WifiService.this, callview.class);           인텐트 생성. 여기서 NullpointerException 발생!!!!
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);                   로그는 이상하게도 남지 않지만, 라인투라인 디버그를 해보니
     startActivity(intent);                                                                                 callview.class를 제대로 부르지 못해서 ClassNotFoundException이
    }                                                                                                                  먼저 발생하는 것 같았습니다.
    
.. 중략..

}

물론 서버와 커넥트가 되고 (여기에 명시되어있지 않았지만)서로 주기적으로 ping을 주고 받는 것은 정상적으로 작동합니다.
그런데 Intent를 처리하는 부분에서 계속 알수없는 익셉션을 뿜어내네요..