मैं हैंडलर के साथ कुछ समस्याओं में फंस गया हूँ। विशेष रूप से, जब मैं क्रमशः अपना डिवाइस लॉक और अनलॉक करता हूं, या जब ऑनपॉज़() और ऑनर्यूम() को कॉल किया जाता है, तो मुझे कॉलबैक को रोकने और फिर से शुरू करने की आवश्यकता होती है। मैंने handler.Post(action)
और handler.RemoveCallbacks(action)
को OnPause() और OnResume() में रखा है लेकिन वे ठीक से काम नहीं करते हैं। दरअसल, जब मैं बाहर निकलता हूं और अपने आवेदन में फिर से प्रवेश करता हूं, तो ऐसा लगता है कि handler.Post(action)
को दो बार कॉल किया जाता है क्योंकि टेक्स्ट व्यू का अपडेट सामान्य से तेज हो जाता है। इसके अलावा, यही बात तब होती है जब मैं डिवाइस को लॉक या अनलॉक करता हूं। मुझे नहीं पता कि मैं इस मुद्दे को कैसे हल कर सकता हूं। यह मेरा कोड है:
public class MainActivity : Activity
{
int count = 1;
TextView text;
Handler handler;
myrunnable runnable;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
// Get our button from the layout resource,
// and attach an event to it
text = FindViewById<TextView>(Resource.Id.textView1);
handler = new Handler();
runnable = new myrunnable(text, handler);
}
protected override void OnResume()
{
handler.Post(runnable.Run);
base.OnResume();
}
protected override void OnPause()
{
handler.RemoveCallbacks(runnable.Run);
base.OnPause();
}
}
public class myrunnable : Java.Lang.Object, IRunnable
{
int i;
TextView text;
Handler handler;
public myrunnable() { }
public myrunnable(TextView text, Handler handler)
{
this.handler = handler;
this.text = text;
i = 0;
}
public IntPtr Handle
{
get
{
return (IntPtr) 0;
}
}
public void Dispose()
{
}
public void Run()
{
i++;
text.Text = i.ToString();
if (i < 100)
handler.PostDelayed(Run, 1000);
}
}
पहले ही, आपका बहुत धन्यवाद।
1 उत्तर
मुझे भी यही तकलीफ़ है। हालांकि, समस्या टेक्स्ट व्यू नहीं है, यह है कि जब एप्लिकेशन शुरू होता है और निलंबित गतिविधि फिर से शुरू होने पर भी रेज़्यूम पर कॉल किया जाता है। Id canRun जैसे बूलियन को सेट करने की अनुशंसा करता है कि यदि गलत सेट किया जाता है तो हैंडलर पोस्ट नहीं करेगा। और अगर यह सच है तो हैंडलर अपनी इच्छानुसार पोस्ट और रद्द कर सकता है। मुझे आशा है कि यह मदद करता है और यह रास्ता नहीं है।
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।