それで、私はクライアント用のアプリケーションを作成してネットワーク部分に到達しました。現在、マニフェストから targetSDK タグを削除しているため、MainThreadException は発生しません。メインスレッドでは遅いので、ネットワーク操作を行うべきではないと言っている人やドキュメントを見てきました...
質問: メイン スレッドではなく、どこでどのようにネットワーク操作を行うのですか? コードは次のとおりです。
public static class MagFragment extends Fragment {
public static final String ARG_MAGAZINE_NUMBER = "magazine_number";
public MagFragment() {
// Empty constructor required for fragment subclasses
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
int i = getArguments().getInt(ARG_MAGAZINE_NUMBER);
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
if(i != 0){
rootView = inflater.inflate(R.layout.fragment_magazine, container, false);
TextView magText = (TextView) rootView.findViewById(R.id.textViewMag);
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://csddata.site11.com");
HttpResponse response = httpclient.execute(httppost);
HttpEntity httpEntity = response.getEntity();
InputStream inputstream = httpEntity.getContent();
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(inputstream,"iso-8859-1"),8);
magText.setText(reader.readLine());
}catch (Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
String magazine = getResources().getStringArray(R.array.magazine_array)[i];
Log.d("MagFragment", "MagNumber" + i);
getActivity().setTitle(magazine);
return rootView;
}
}