2011-11-30 16 views
27

मेरे आवेदन में, मैं अलार्म प्रबंधक का उपयोग कर एक सेवा शुरू करने की कोशिश कर रहा हूं। जब मैं एक बटन सेवा पर क्लिक कर रहा हूं, तो मुझे एक विशेष समय में शुरू करना चाहिए जो मैं दे रहा हूं। अलार्म प्रबंधक के लिए मेरे कोड नीचे दिया गया हैAndroid में अलार्म प्रबंधक का उपयोग कर सेवा कैसे प्रारंभ करें?

public void onClick(View view) 
{ 
    if(view == m_btnActivate) 
    { 
     Calendar cur_cal = Calendar.getInstance(); 
     cur_cal.setTimeInMillis(System.currentTimeMillis()); 
     cur_cal.add(Calendar.SECOND, 50); 
     Log.d("Testing", "Calender Set time:"+cur_cal.getTime()); 
     Intent intent = new Intent(DashboardScreen.this, ServiceClass.class); 
     Log.d("Testing", "Intent created"); 
     PendingIntent pi = PendingIntent.getService(DashboardScreen.this, 0, intent, 0); 
     AlarmManager alarm_manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
     alarm_manager.set(AlarmManager.RTC, cur_cal.getTimeInMillis(), pi); 
     Log.d("Testing", "alarm manager set"); 
     Toast.makeText(this, "ServiceClass.onCreate()", Toast.LENGTH_LONG).show(); 
    } 
} 

और bellow मेरी सेवा क्लास है:

public class ServiceClass extends Service{ 

    @Override 
    public void onCreate() { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
     Log.d("Testing", "Service got created"); 
     Toast.makeText(this, "ServiceClass.onCreate()", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void onDestroy() { 
     // TODO Auto-generated method stub 
     super.onDestroy(); 
    } 

    @Override 
    public void onStart(Intent intent, int startId) { 
     // TODO Auto-generated method stub 
     super.onStart(intent, startId); 
     Toast.makeText(this, "ServiceClass.onStart()", Toast.LENGTH_LONG).show(); 
     Log.d("Testing", "Service got started"); 
    } 

} 

सेवा शुरू कर देंगे तो यह सेवा वर्ग में लॉग संदेशों को मुद्रित करना चाहिए। लेकिन यह नहीं दिख रहा है। क्या कोई मदद कर सकता है?

+0

मैंने नाम का उल्लेख किया, लेकिन एंड्रॉइड नहीं: सक्षम = "सत्य" –

+1

अलार्म मैनेजर.cancel (पिंटेंट) का उपयोग करें; अलार्म प्रबंधक को रद्द करने के लिए। – user370305

+1

'डिफ़ॉल्ट रूप से एंड्रॉइड: सक्षम' 'सत्य' – Tautvydas

उत्तर

72

यह है कि मैं क्या वर्तमान समय से 30 सेकंड के बाद सेवा शुरू करने के लिए इस्तेमाल किया है, है,

Intent intent = new Intent(DashboardScreen.this, ServiceClass.class); 
PendingIntent pintent = PendingIntent.getService(DashboardScreen.this, 0, intent, 0); 
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 30*1000, pintent); 

यह प्रयास करें, और मुझे पता है कि क्या होने हैं ...

संपादित करें:

आपकी manifest.xml फ़ाइल में

<service android:enabled="true" android:name=".ServiceClass" /> 
+1

हां यह काम कर रहा है..धन्यवाद..लेकिन अब मैं किसी विशेष समय में सेवा को कैसे रोक सकता हूं ?? –

+1

क्या आप उपरोक्त प्रश्न के लिए मेरी मदद कर सकते हैं ?? मैं किसी विशेष समय में अलार्म प्रबंधक को कैसे रोक सकता हूं .. –

+0

अलार्म मैनेजर.cancel (पिंटेंट) का उपयोग करें; अलार्म प्रबंधक को रोकने के लिए। – user370305

12

मुझे पता है कि यह एक पुराना सवाल है, लेकिन केवल चोटी की मदद करने के लिए Google से ली, यहां बताया गया है कि आप अपनी सेवा को कैसे जीवंत रख सकते हैं।

Intent ishintent = new Intent(this, HeartBeat.class); 
    PendingIntent pintent = PendingIntent.getService(this, 0, ishintent, 0); 
    AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
    alarm.cancel(pintent); 
    alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),5000, pintent); 

सेवा हर 5 सेकंड में मारे गए और पुनरारंभ की जाती है।

+0

मूल्य को एंड्रॉइड 5 के लिए 60000ms तक मजबूर किया जाएगा, भरोसा न करें ... आपको 1 मिनट का इंतजार करना होगा। फिर भी धन्यवाद – thanhbinh84

संबंधित मुद्दे