0

Дело: Я использую задачу Async для отображения некоторого списка. Когда я нажимаю на какой-либо элемент списка, другое мероприятие выходит за рамки последнего действия. Эта операция переднего плана содержит кнопку завершения, через которую заканчивается операция переднего плана.Отключение повторного выполнения задачи Async при завершении операции переднего плана

Проблема: Когда я нажимаю кнопку Готово переднего плана отделки деятельности, но это последняя деятельность, имеющая Асинхронный задачу снова выполняет.

Потребность: Я хочу, чтобы, когда я нажимаю кнопку закончить, то только переднюю план отделку деятельности и фоновую активность, имеющую Асинхронная Задача не должна выполняться снова. Эта фоновая активность должна быть такой же, как и перед открытием переднего плана.

EDIT: первого класса, имеющий асинхронная Задача

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.restaurant_detail); 
    Intent i = getIntent(); 
    res_id = i.getStringExtra("id"); 
    gps = new GPSTracker(getApplicationContext()); 
    session = new SessionManagement(getApplicationContext()); 
    fillDatabase = new DatabaseHandler(getApplicationContext()); 
    fillDatabase.open(); 
    count = fillDatabase.fetchCount(); 
    SetUpViews(); 
    SimpleDateFormat sdf = new SimpleDateFormat("EEEE"); 
    Date d = new Date(); 
    dayOfTheWeek = sdf.format(d); 
    Log.i("WEEKDAY", dayOfTheWeek); 
    imageLoader = new ImageLoader(getParent()); 
    progressDialog = ProgressDialog.show(getParent(), "", "Loading..."); 
    Log.v(String.valueOf(count), "count"); 
    // new MenuTask().execute(); 
    new DetailsTask().execute(); 


} 
public class DetailsTask extends AsyncTask<String, String, String> { 

    @Override 
    protected String doInBackground(String... arg0) { 
     // Creating JSON Parser instance////////// 
     JSONParser jParser = new JSONParser(); 
     // Getting JSON String from URL.............. 
     JSONObject jObject = jParser 
       .getJSONFromUrl("http://smartaway.dk/json/rest_get_details.php?id=" 
         + res_id); 
     try { 
      // /Getting array of Events....... 
      details = jObject.getJSONArray(TAG_NODE); 
      ///LOOping through AllEvents........ 
      for (int i = 0; i < details.length(); i++) { 
       JSONObject e = details.getJSONObject(i); 
       res_id = e.getString(TAG_ID); 
       res_name = e.getString(TAG_RESNAME); 
       logo = e.getString(TAG_RES_LOGO); 
       name = e.getString(TAG_RESNAME); 
       city_state = e.getString(TAG_CITY); 
       street = e.getString(TAG_STREET); 
       localityString = e.getString(TAG_LOCALITY); 
       restype = e.getString(TAG_RESTYPE); 
       Log.v(restype, "restype"); 
       lat = e.getString(TAG_LAT); 
       Log.v(lat, "latitude"); 

       lng = e.getString(TAG_LNG); 
       Log.v(lng, "longitude"); 
       cuisineString = e.getString(TAG_COUSINE); 
       timingsString = e.getString(TAG_TIMING); 
       // costString = e.getString(TAG_COSRTWO); 

       res_des_String = e.getString(TAG_RES_DES); 

       cardString = e.getString(TAG_CARDS); 
       facilitiesString = e.getString(TAG_FACILITIES); 

       parkingString = e.getString(TAG_PARKING); 
       minorderString = e.getString(TAG_MINORDER); 
       deliverychargesString = e.getString(TAG_DELIVERY_CHARGES); 
       ratings = e.getString(TAG_RATING); 
       smily = e.getString(TAG_SMILY); 
       s_o_t = e.getString(TAG_S_O); 
       s_c_t = e.getString(TAG_S_C); 
       m_o_t = e.getString(TAG_M_O); 
       m_c_t = e.getString(TAG_M_C); 
       t_o_t = e.getString(TAG_T_O); 
       t_c_t = e.getString(TAG_T_C); 
       w_o_t = e.getString(TAG_W_O); 
       w_c_t = e.getString(TAG_W_C); 
       th_o_t = e.getString(TAG_TH_O); 
       th_c_t = e.getString(TAG_TH_C); 
       f_o_t = e.getString(TAG_F_O); 
       f_c_t = e.getString(TAG_F_C); 
       sat_o_t = e.getString(TAG_SAT_O); 
       sat_c_t = e.getString(TAG_SAT_C); 
       smily = e.getString(TAG_SMILY); 

      } 

     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 

     super.onPostExecute(result); 
     // progressBar.setVisibility(View.GONE); 
     progressDialog.dismiss(); 
     detail.setVisibility(View.VISIBLE); 
     imageLoader.DisplayImage(logo, reslogo); 
     resname.setText(StringEscapeUtils.unescapeHtml(name)); 
     toptxt.setText(StringEscapeUtils.unescapeHtml(name)); 
     address.setText(StringEscapeUtils.unescapeHtml(street) + " \n" 
       + StringEscapeUtils.unescapeHtml(localityString) + " " 
       + StringEscapeUtils.unescapeHtml(city_state)); 
     cuisineString = (cuisineString.equals("") ? "Not present" 
       : StringEscapeUtils.unescapeHtml(cuisineString)); 
     cuisine.setText(cuisineString); 
     if (dayOfTheWeek.equalsIgnoreCase("monday")) { 
      timings.setText(m_o_t + " - " + m_c_t); 

     } else if (dayOfTheWeek.equalsIgnoreCase("tuesday")) { 
      timings.setText(t_o_t + " - " + t_c_t); 
     } else if (dayOfTheWeek.equalsIgnoreCase("wednesday")) { 
      timings.setText(w_o_t + " - " + w_c_t); 
     } else if (dayOfTheWeek.equalsIgnoreCase("thursday")) { 
      timings.setText(th_o_t + " - " + th_c_t); 
     } else if (dayOfTheWeek.equalsIgnoreCase("friday")) { 
      timings.setText(f_o_t + " - " + f_c_t); 
     } else if (dayOfTheWeek.equalsIgnoreCase("saturday")) { 
      timings.setText(sat_o_t + " - " + sat_c_t); 
     } else if (dayOfTheWeek.equalsIgnoreCase("sunday")) { 
      timings.setText(s_o_t + " - " + s_c_t); 
     } 
     // costfortwo.setText(costString); 
     res_des_String = (res_des_String.equals("") ? "Not present" 
       : StringEscapeUtils.unescapeHtml(res_des_String)); 
     cardString = (cardString.equals("") ? "Not present" 
       : StringEscapeUtils.unescapeHtml(cardString)); 
     parkingString = (parkingString.equals("") ? "Not present" 
       : StringEscapeUtils.unescapeHtml(parkingString)); 
     facilitiesString = (facilitiesString.equals("") ? "Not present" 
       : StringEscapeUtils.unescapeHtml(facilitiesString)); 
     minorderString = (minorderString.equals("") ? "Not present" 
       : StringEscapeUtils.unescapeHtml(minorderString)); 
     deliverychargesString = (deliverychargesString.equals("") ? "Not present" 
       : StringEscapeUtils.unescapeHtml(deliverychargesString)); 

     res_description.setText(res_des_String.replaceAll(
       "(\r\n\t|\n\t|\n|\t)", "")); 
     cards.setText(cardString); 
     facilities.setText(facilitiesString); 

     parking.setText(parkingString); 
     minoredr.setText(minorderString); 
     delivery_charges.setText(deliverychargesString); 
     if (ratings.equals("")) { 
      rating.setVisibility(View.GONE); 
     } else { 
      DecimalFormat numberFormat = new DecimalFormat("##.##"); 
      rating.setText(numberFormat.format(Double.valueOf(ratings))); 
     } 
     if (smily.equals("1")) { 
      smiley.setImageResource(R.drawable.happy_smile); 
     } else if (smily.equals("0")) { 
      smiley.setImageResource(R.drawable.sad_smile); 
     } else { 
      smileyLayout.setVisibility(View.GONE); 
     } 

    } 
} 

второго класса Наличие отделки Кнопка

setContentView(R.layout.submenulist); 

    Intent i = getIntent(); 
    main_menu = i.getStringExtra("id"); 
    res_id = i.getStringExtra("res_id"); 
    res_name = i.getStringExtra("res_name"); 
    Log.v("Main Menu Name", main_menu); 
    fillDatabase = new DatabaseHandler(getApplicationContext()); 
    fillDatabase.open(); 
    count = fillDatabase.fetchCount(); 


    backButton = (Button) findViewById(R.id.finish); 
    backButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      finish(); 
     } 
    }); 



} 

Вторая деятельность имеет кнопку нажать, что на переднем плане отделки деятельности, но после окончания этого фона вызов активности Acync Задача выполнить снова. Как перенести это.

Большое спасибо

+0

Вы можете разместить некоторые пожалуйста, код для следующего: Ваш код AsyncTask, как вы запустите активность переднего плана и [launchMode] (http://developer.android.com/guide/topics/manifest/activity-element.html#lmode) ваших действий в вашем AndroidManifest? – verybadalloc

+0

напишите свой код .. – bakriOnFire

+0

Я не хочу, чтобы Asych Task выполнялась снова, когда я нажимаю кнопку «Назад» из основной деятельности.У меня нет кода, но вы хотите знать его концепцию. –

ответ

0

затем начать AsyncTask в OnCreate метод первой активности при запуске второй активности первое действие будет на первом плане и когда видна вторая активность finjsh тогда первая деятельность будет не будет воссоздать его будет возобновлять активность паузы, так как u вызывается asynctask в oncreate, она не будет запускать нить снова.

+0

Да, вы правы, но я вызываю выполнение в oncreate после этого при завершении работы переднего плана, он снова выполняет –

+0

при завершении операции переднего плана - это первая активность или второе действие? –

+0

Второе действие –

0

Ну это то, что вы должны достичь с помощью одноэлементного класса

  1. Создать класс сказать DataManager

    public class DataManager { 
    public static DataManager dManager; 
    
    boolean isDataRecieved; 
    
    public static DataManager getInstance() 
    { 
        if(dManager!=null) 
         return dManager; 
    
        else 
         dManager=new DataManager(); 
    
        return dManager; 
    } 
    
    } 
    

здесь метод деЫпзЬапсе гарантирует, что только один объект этого класса и логическое значение isDataRecieved должно быть установлено в true, как только данные будут проанализированы и сохранены.

как на postExecute вашей AsyncTask добавить эти строки

Datamanager d=Datamanager.getInstance(); 
d.isDataRecieved=true; 

теперь OnCreate добавить эти строки

Datamanager d=Datamanager.getInstance(); 
if(!d.isDataRecieved) 
{ 
//This means data is not recieved 

execute your asynctask else not 
} 
+0

вы пробовали это? –

+0

не работает с этим ... –

+0

код отправлен. Пожалуйста, посмотрите –

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