2016-07-27 3 views
1

Если у меня есть AsyncTask как отдельный класс, и я запускаю AsyncTask из Activity, будет ли AsyncTask содержать ссылку на Activity, как если бы это был внутренний класс более позднего? Или он решает проблему утечки памяти?AsyncTask как отдельный класс

Также будет передан контекст, завернутый в WeakReference в AsyncTask, внеся какие-либо изменения?

+0

Да будет содержать ссылку на операцию, передавая 'context' деятельности, подобно внутреннему классу. – Arshak

+0

и что вы передаете контекст, заключенный в WeakReference? – BVtp

+0

Чтобы избежать утечки памяти, оберните контекст в WeakReference. –

ответ

0

вы можете использовать, как это и получить refrense деятельности

public class DeleteUserTask extends AsyncTask<String, String, String> { 
    private Context context; 
    private JSONObject Object, Object1; 
    public static String Success, Exception; 
    public static boolean isClick; 

    public DeleteUserTask(Context ctx) { 
     context = ctx; 
    } 

    @Override 
    protected void onPreExecute() { 
     OrganizationUser_EditProfileScreen.pb.setVisibility(View.VISIBLE); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     try { 
      ActivityBase.result = null; 
      Log.e("", "Request-->" + writeJSON().toString()); 
      ActivityBase.PostMethod(context, 
        WebServiceLinks.UserStatusButtonTask, writeJSON()); 
      Object = new JSONObject(ActivityBase.result); 
      Object1 = Object 
        .getJSONObject("OrganizationUserProfileButtonUpdateResult"); 
      Success = Object1.getString("Success"); 
      Exception = Object1.getString("Exception"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     try { 
      OrganizationUser_EditProfileScreen.pb.setVisibility(View.GONE); 
      if (ActivityBase.result != null && Success == "true") { 
       ActivityBase 
         .GeneralDialog(R.string.account, Exception, context); 

      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public JSONObject writeJSON() { 
     JSONObject object = new JSONObject(); 
     try { 

      object.put("OrgID", OrganizationLoginTask.OrgID); 
      object.put("OrgUserID", Search_Screen.OrgUserID); 
      object.put("Status", OrganizationUser_EditProfileScreen.Status); 
      object.put("ModifiedByTypeCode", "2"); 

      object.put("ModifiedSourceCode", "8"); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return object; 
    } 
} 
+0

Прошу прощения, но опять же - как это решить проблему утечки памяти? – BVtp

Смежные вопросы