안드로이드 버전 3.0 이상에서 UI Thread에서 인터넷 연결시 runtime 에러 안 나게 하는 법
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
안드로이드 버전 3.0 이상부터는 인터넷 연결은 쓰레드나 핸들러에서 처리하도록 정책이 바뀌었다. 그래서 UI 쓰레스에서 인터넷 연결을
시도하면(HttpURLConnection과 같은 것으로) 실행 타임에서 에러가 발생한다. 그런데 위와 같은 코드를 인터넷 연결을 시도하는 코드 앞에
표시해 두면 안드로이드 버전 3.0 이상에서도 정상적으로 잘 실행이 된다.
그런데 위 코드를 인터넷을 연결하는 곳 앞에 하지 않고 onCreate()에 다음과 같이 해도 가능하다. 우와 놀랍다.
@Override
public void onCreate(Bundle savedInstanceState) {
if (Build.VERSION.SDK_INT > 9){
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.get_signature_from_toodledo);
txt = (TextView)findViewById(R.id.txt);
}
댓글 없음:
댓글 쓰기