単純なAndroidアプリのスレッド化に起因するいくつかの問題が発生しているのではないかと思います。
次のようなアクティビティがあります。
- メインスレッドでダイアログを実行します
- バックグラウンドスレッドを回転させ、この接続を使用してデータを取得するためのPHPスクリプトをヒットし、
DefaultHttpClient
この接続を閉じます。これにより、インターネット上の画像へのURLが正常に返されます HttpUrlConnection
呼び出されたものを開きconn
、conn.connectを試してください- この時点でアプリはエラーなしでフリーズします
ここに配置するコードがわからない場合は、すべて貼り付けることができますが、それでは多すぎるので、さらに情報が必要な場合はお知らせください。
/**
* Background Async Task to Load all Question by making HTTP Request
*/
class LoadAllImages extends AsyncTask<String, String, String> {
/**
* Before starting background thread Show Progress Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
// dialog init'd here
}
@Override
protected String doInBackground(String... args) {
// Building Parameters
List<NameValuePair> params = new ArrayList<NameValuePair>();
// getting JSON string from URL
JSONObject json = jParser.makeHttpRequest(url_question_details, "GET", params);
// Check your log cat for JSON response
Log.d("All Questions: ", json.toString());
try {
// images found
// Getting Array of questions
images = json.getJSONArray(TAG_IMAGES);
// looping through All questions
for (int i = 0; i < images.length(); i++) {
JSONObject c = images.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(TAG_IMAGEID);
String location = c.getString(TAG_IMAGELOCATION);
URL myFileUrl = null;
try {
myFileUrl = new URL(location);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect(); // freezes here
int length = conn.getContentLength();
int[] bitmapData = new int[length];
byte[] bitmapData2 = new byte[length];
InputStream is = conn.getInputStream();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}