2013-04-18 6 views
6

मैंने अपनी गतिविधि को रीफ्रेश करने के लिए पोस्ट किए गए विधि का उपयोग किया, जो ठीक काम करता है। लेकिन समस्या यह है कि जब भी मैं वापस बटन postdelayed विधि कॉल वापस पिछले गतिविधि .. प्रेसएंड्रॉइड में पोस्टडेलेड विधि को कैसे मारें

// हैंडलर 30000 गतिविधि

mHandler.postDelayed(new Runnable() { 
public void run() { 
       dostuff(); 

     } 
      }, 30000); 
    } 

protected void dostuff() { 
Intent intent = getIntent(); 
finish();startActivity(intent); 
Toast.makeText(getApplicationContext(), "refreshed", Toast.LENGTH_LONG).show(); 
} 

public void onBackPressed() { 
     super.onBackPressed(); 
     finish(); 
     mHandler.removeCallbacks(null); 
     } 

protected void onStop() { 
      mHandler.removeCallbacks(null); 
     super.onStop(); 
    } 
+1

http://stackoverflow.com/q/16050807/931982 .. नकल हो सकता है अपने स्वयं के प्रश्न का .. ऐसा न करें – stinepike

उत्तर

2

इस का संभावित हल की मिली-सेकेंड के बाद देरी जलपान के लिए है:

dostuff() विधि करते समय, बस जांचें कि Activity.isFinising() और करें। अगर यह खत्म हो रहा है, तो बस वापस आओ।

जब आप वापस दबाते हैं, तो गतिविधि समाप्त हो जाएगी और उसके बाद यदि doStuff() निष्पादित होता है, तो यह कुछ भी नहीं करेगा।

1

mHandler.removeCallbacks (शून्य); आप एक पैरामीटर के रूप में शून्य गुजर रहे हैं। एक रननेबल इंजेक्ट पास करें। यह काम करना चाहिए।

public final void removeCallbacks (Runnable r) 

उपर्युक्त का उपयोग करें।

एपीआई स्तर 1 में जोड़ा गया संदेश पंक्ति में चलने योग्य रन के किसी लंबित पद को हटाएं।

http://developer.android.com/reference/android/os/Handler.html#removeCallbacks%28java.lang.Runnable%29

संपादित करें: उदाहरण

Runnable runnable = new Runnable() { 
@Override 
public void run() { 
    // execute some code 
} 
}; 

Handler handler = new Handler(); 
handler.postDelayed(runnable, 10000); 
handler.removeCallbacks(runnable); 
+2

यह विशेष रूप से 'रननेबल' का उदाहरण बनना है जो बनाया गया था। – dmon

+0

@ डॉन सहमत हुए कि मैंने अपना जवाब संपादित किया – Raghunandan

6

तुम सिर्फ इस का उपयोग यह आपकी मदद

Runnable runobj=new Runnable() { 
public void run() 
{ 
dostuff(); 

} 
    }; 
mHandler.postDelayed(runobj, 30000); 
    } 
public void onBackPressed() 
{ 
super.onBackPressed(); 
mHandler.removeCallbacks(runobj); 
} 
संबंधित मुद्दे