2012-08-14 3 views
0
  1. 내 활동에 저는 AsyncTask가 있는데, doInBackGround가 재정의되었습니다. 동일한 작업에서는카메라의 의도와 비동기 작업의 doInBackground 충돌

  2. 나 카메라를 열고 난 카메라 의도가 나는 오버라이드 doInBackGround 방법 트리거링을 호출 할 때, 사용자가 문제가되는 PIC

을 확보 할 수 있도록 카메라 의도를 가지고있다. 어느 날 결국 클라이언트에게 다시 할당하기 전에 클라이언트를 해제하라는 메시지가 나타나는 SingleClientConnManager 예외가 발생합니다. 내가 changeImage 텍스트 뷰를 클릭하면 1, 2, 3, 4, 5는 코드 흐름의 순서를 제공 여기에 코드 포인트에

public class UserProfileActivity extends Activity { 

//many instance fiels here 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.user_profile); 

     new LongOperation().execute(""); 

     userImage = (ImageView) findViewById(R.id.profileImage); 
     userName = (TextView) findViewById(R.id.userName_profile); 
     userLocation = (TextView) findViewById(R.id.userLocation_profile); 
     editInfo = (TextView) findViewById(R.id.edit_profile); 
     changeImage = (TextView) findViewById(R.id.changeImage_profile); 
     userScore = (TextView) findViewById(R.id.userScore_profile); 
     friendsLabel = (TextView) findViewById(R.id.userFriends_profile); 


      changeImage.setOnClickListener(new View.OnClickListener() { 

       public void onClick(View arg0) { 
        Intent cameraIntent = new Intent(
          android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
        startActivityForResult(cameraIntent, CAMERA_REQUEST); 
//Point 1 
       } 
      }); 
//Point 2 
    } 
    private class LongOperation extends AsyncTask<String, Void, String> { 

     private InputStream is; 
     private StringBuilder sb; 
     private String result; 
     private ProgressDialog dialog = new ProgressDialog(context); 

     @Override 
     protected String doInBackground(String... params) { 

//Point 3 
      try { 
       HttpResponse response; 

        HttpPost httppost = new HttpPost(
          "http://www.xxxxx.com/yyyy/zzzz"); 
        //httpclient is global to maintain sessions 
        response = SignUpActivity.httpclient.execute(httppost); 
        HttpEntity entity = response.getEntity(); 
        is = entity.getContent(); 

       try { 
        BufferedReader reader = new BufferedReader(
          new InputStreamReader(is, "iso-8859-1"), 8); 
        sb = new StringBuilder(); 
        sb.append(reader.readLine() + "\n"); 
        String line = "0"; 
        while ((line = reader.readLine()) != null) { 
         sb.append(line + "\n"); 
        } 
        is.close(); 
        result = sb.toString(); 
       } catch (Exception e) { 
        Log.e("error in reading input stream", e.toString()); 
       } 
       try { 
        JSONObject jObj = new JSONObject(result); 
        String status = jObj.getString("status"); 
        score = jObj.getInt("credits"); 
        level = jObj.getInt("level"); 
        image = jObj.getString("image"); 
        fname = jObj.getString("fname"); 
        lname = jObj.getString("lname"); 
        city = jObj.getString("city"); 
        email = jObj.getString("email"); 
        clickedUserId = jObj.getInt("user_id"); 

        JSONArray friendsJsonArray = jObj.getJSONArray("friends"); 
        size = friendsJsonArray.length(); 

        ArrayList<String> friendsNames = new ArrayList<String>(); 
        friendsIds = new int[size]; 
        for (int i = 0; i < size; i++) { 

         friendsNames.add(friendsJsonArray.getJSONObject(i) 
           .getString("name")); 
         friendsIds[i] = friendsJsonArray.getJSONObject(i) 
           .getInt("user_id"); 
        } 
        adapter = new ArrayAdapter<String>(context, 
          R.layout.simple_listview_item, friendsNames); 
       } catch (Exception e) { 

        Log.d("error in creating json object", e.toString()); 
       } 
      } catch (Exception e) { 
//Point 5 
       Log.e("error main try", "Error in http connection" + e.toString()); 
      } 
      return "Executed"; 
     } 
     @Override 
     protected void onPostExecute(String result) { 

      friendsList.setAdapter(adapter); 
      userScore.setText(score + " points" + " level " + level); 
      userName.setText(fname + " " + lname); 
      userLocation.setText(city); 
      changeImage.setText("Change image"); 
      editInfo.setText("Edit"); 
      friendsLabel.setText("Friends"); 
      Bitmap bitmap = null; 
      try { 
       bitmap = BitmapFactory 
         .decodeStream((InputStream) new URL(image).getContent()); 
       userImage.setImageBitmap(bitmap); 
      } catch (MalformedURLException e1) { 

       e1.printStackTrace(); 
       userImage.setImageResource(R.drawable.xxx); 
      } catch (IOException e2) { 

       e2.printStackTrace(); 
       userImage.setImageResource(R.drawable.xxx); 
      } 

      if (dialog.isShowing()) { 
       dialog.dismiss(); 
      } 
     } 

     @Override 
     protected void onPreExecute() { 

      this.dialog.setMessage("Please wait"); 
      this.dialog.show(); 
     } 

     @Override 
     protected void onProgressUpdate(Void... values) { 

     } 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     super.onActivityResult(requestCode, resultCode, data); 

//Point 4 
     if (resultCode == RESULT_OK) { 
      if (data != null) { 

       photo = (Bitmap) data.getExtras().get("data"); 
       userImage.setImageBitmap(photo); 

      }else{ 

       Intent intent = new Intent(UserProfileActivity.this, 
         UserProfileActivity.class); 
       startActivity(intent); 
      } 
     } else { 

      Intent intent = new Intent(UserProfileActivity.this, 
        UserProfileActivity.class); 
      startActivity(intent); 
     } 
    } 
} 

:

여기 내 활동 코드입니다.

이 시나리오를 해결하는 데 도움을주십시오.

감사합니다.

답변

0

나는 당신이 열려 camera.That이 문제

를 일으키는 활동의에서 onCreate() 메소드를 다시 이 menifest에 활동이 줄을 삽입하십시오를 호출 할 때 문제가 바뀌지 때문에 장치 방향이다 올바른 오전 경우
<activity 
      android:name="your activity" android:configChanges="keyboardHidden|orientation" 
      /> 
+0

no. 나는 오리엔테이션 변화 때문이 아니라고 확신한다. 내 애플 리케이션을 사용하는 동안 방향을 바꿀 수 없습니다. 또한 모든 활동에 이미이 코드를 작성했습니다. 해결책을 찾기 위해 하루 종일 검색 한 결과, 카메라 의도가 doInBackground 메소드를 호출했기 때문에 이것이 발견되었습니다. 지금까지 같은 작업에서 비동기 작업과 카메라 의도 호출을 사용하지 않았습니다. 원한다면이 비슷한 질문을 할 수 있습니다. http://stackoverflow.com/questions/11865001/will-onactivityresult-restart-my-activity –

관련 문제