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 |
---|