네트워크에서 오류 StrictMode$AndroidBlockGuardPolicy.onNetwork
안드로이드 앱과 사용법을 만들었습니다.JSON서버로부터 데이터를 취득하고 있습니다만, 다음의 에러 메세지가 표시됩니다.
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1117)
어떻게 하면 이 문제를 해결할 수 있을까요?
감사해요.
MainActivity 클래스에 "StrictMode"를 두 줄 삽입해야 합니다. 예를 들어 다음과 같습니다.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
try {
// JSON here
} catch (JSONException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setContentView(R.layout.activity_main);
Intent intent=new Intent(this,HomeActivity.class);
startActivity(intent);
}
}
에이.사콘
편집: 이 답변은 "문제 해결"은 되지만 실제로 설명하지는 않습니다.이것은 중요한 부분입니다.
Strict Mode 변경은 수정 사항이 아닙니다.또한 이 예외는 프로그램 로직의 오류가 아닙니다.프로그램 패러다임의 오류와 예외는 다음과 같습니다.
메인 스레드에서 http 콜을 실행하면 UI가 동결되므로 실행하지 마십시오.다른 응답에서도 알 수 있듯이 HTTP 콜을 AsyncTask 클래스에 핸드오프해야 합니다.
https://developer.android.com/reference/android/os/AsyncTask
Strict Mode를 변경하는 것은 앱에 전달될 뿐입니다.나쁜 코드를 쓰는 것을 상기시키지 마세요.이것은 디버깅에 사용할 수도 있고, 자신이 무엇을 하고 있는지 알고 있는 경우에 사용할 수도 있지만, 일반적으로 이 방법은 적합하지 않습니다.
사용하기 쉽다AsyncTask여기서 언급했듯이, 단지 이 문제를 없애기 위한 대안입니다.Exception사용방법:
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
또는 다음과 같습니다.
Thread thread = new Thread(new Runnable(){
@Override
public void run() {
try {
//Your code goes here
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
}
});
thread.start();
액티비티에서Exception일어나다.
작성 방법 뒤에 두 줄만 추가합니다.
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
언급URL : https://stackoverflow.com/questions/22395417/error-strictmodeandroidblockguardpolicy-onnetwork
'programing' 카테고리의 다른 글
| 각도 js 애플리케이션을 위해 투영기에서 애니메이션을 비활성화하는 방법 (0) | 2023.04.05 |
|---|---|
| dom-testing-library 또는 react-testing-library에서 입력값을 테스트하는 최선의 방법 (0) | 2023.04.05 |
| JSON 개체를 포맷할 때 '{'와 '['의 차이 (0) | 2023.04.05 |
| JQuery를 사용하여 AJAX를 사용하여 Excel 데이터 전송 (0) | 2023.04.05 |
| 서버측 최적화를 위해 $http를 통해 angular-ui의 자동 검색을 서버에 연결하려면 어떻게 해야 합니까? (0) | 2023.04.05 |