본문 바로가기

AndroidStudio

발생하는 예외 대처법

1. w/audio_hw_generic not supplying enough data to hal expected position

원인: AVD와 같은 Emulator 환경에서 실행시 본 오류가 많이 발생한다. 

해결방안: Emulator 환경이 아닌 실제 모바일폰 환경에서 실행할 경우 해당 오류는 발생하지 않는다.

 

2. Field에서의 잘못된 정의로 인한 강제종료

원인: Layout의 Button, TextView, EditView 등 해당 widget들을 class와 연동하기 전 Field 값을 정의하는 경우 문제가 발생한다.

 

public class MainActivity extends AppCompatActivity {

//필드 선언
private String busNum = editText.getText().toString(); //강제종료가 발생하는 필드

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_routeinfo2);

        editText = (EditText) findViewById(R.id.editText);
	}
}

 

해결방안: 강제종료가 발생하는 필드에서 타입만 선언하고 실제 사용하는 메소드 내에서 widget을 활용한 값을 선언한다.

 

 

public class MainActivity extends AppCompatActivity {

//필드 선언
private String busNum; //강제종료가 발생하는 필드

@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_routeinfo2);

        editText = (EditText) findViewById(R.id.editText);
	}
    
    public void getBusNum(){
    	busNum = editText.getText().toString();
    }
}

 

3. Log 값 검사 결과, 값을 내놓지 않거나 looping하지 않고 중간에 뚝 끊기는 경우

원인: code 중 중괄호, 소괄호 설정이 잘못되어 있는 경우 발생할 수 있다. 예를 들어 if문의 중괄호가 다음 실행문 전에 끝나야 하는데, 다음 실행문을 포괄하는 경우 실행이 되지 않는다.

 

public String getRouteInfo(){
        Log.d("RIC","getRouteInfo 진입");
        StringBuffer stringBuffer = new StringBuffer();
        busNum = editText.getText().toString();
        StringBuilder urlBuilder = new StringBuilder(endPoint);
        if(busNum.contains("-") || busNum.contains("ㅡ")) {
            String[] splitBusNum = busNum.split("-|ㅡ");
            frontBusNum = splitBusNum[0];
            rearBusNum = splitBusNum[1];
        

            try {
            } catch(Exception e){}
           }

 

상기의 if문은 splitBusNum에서 끝나야하지만 try문까지 이어져있다. 이로 인해 if문의 값이 true를 반환하지 않는 경우, 아예 실행이 되지 않아 오류를 찾을 수 없게 된다.

해결방안: Logcat을 통해 어느 부분에서 명령어가 끝이 나는지 확인한 뒤 중괄호, 소괄호 설정을 확인한다. Paste, Copy를 할 때 발생한 문제이다.

 

 

'AndroidStudio' 카테고리의 다른 글

<버스 공공데이터> XPath를 이용한 xml parser  (0) 2020.06.11