2013-06-01 17 views
7

मैं वर्तमान में एक सेवा है जो का उपयोग कर एक गतिविधि की onCreate विधि भीतर शुरू कर दिया है में बनाया सेवा प्रारंभ:एंड्रॉयड: बंद करो/OnCreate()

Intent intentService = new Intent(this, MainService.class); 
this.startService(intentService); 

अब मैं एक पर इस सेवा को रोकने के लिए सक्षम होना चाहिए बटन दबाएं और इसे फिर से एक और बटन प्रेस पर पुनरारंभ करें, हालांकि मुझे यह सुनिश्चित नहीं है कि इस सेवा को कैसे रोकें और इसे फिर से तैयार करें विधि के बाहर की ओर से शुरू करें।

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

मैंने stop service in android पर देखा था लेकिन सेवा शुरू करने की उनकी विधि क्रिएट के भीतर काम नहीं करती है।

एक और अधिक मेरे कोड को देखते पर पूरा:

public class MainActivity extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      lock = (Button) this.findViewById(R.id.lock); 
      unlock = (Button) this.findViewById(R.id.unlock); 

      lock.setOnClickListener(btn_lock); 
      unlock.setOnClickListener(btn_unlock); 

      unlock.setVisibility(View.VISIBLE); 

      lock.setVisibility(View.GONE); 

      Intent intentService = new Intent(this, MainService.class); 
      this.startService(intentService); 

     } 
private OnClickListener btn_lock = new OnClickListener() { 
     public void onClick(View v) { 
       unlock.setVisibility(View.VISIBLE); 
       lock.setVisibility(View.GONE); 


     } 
    }; 
private OnClickListener btn_unlock = new OnClickListener() { 
     public void onClick(View v) { 
       unlock.setVisibility(View.GONE); 
       lock.setVisibility(View.VISIBLE); 

     } 
    }; 

उत्तर

23

जब आप सभी की जरूरत है कभी आप एक सेवा शुरू करना चाहते

startService(new Intent(this, MainService.class)); 

और एक सेवा कभी भी रोकने के लिए सिर्फ फोन

stopService(new Intent(this, MainService.class)); 

याद रखें एंड्रॉइडManifest.xml में सेवा की घोषणा की जानी चाहिए। जैसा कि आपने कहा था कि आपकी सेवा काम कर रही है। मुझे यकीन है कि आपने यह किया है। फिर भी AndroidManifest.xml

<service android:enabled="true" android:name=".MainService" /> 
+0

संपादित लगता है कि onCreate में यह केवल काम करता है कोड onclick श्रोता –

+0

हाँ में काम नहीं करेगा। लेकिन पहले एक सेवा को रोकने का प्रयास करें और फिर इसे शुरू करें। अगर सेवा पहले ही बंद हो गई है तो यह क्रैश नहीं होगा – MDMalik

+0

ऑनक्लिक श्रोता के भीतर काम नहीं करना प्रतीत होता है यह मानते हुए कि इसे किसी और चीज़ में बदला जाना चाहिए? 'This' उपयोग 'MainActivity.this' के बजाय ऑनक्लिक श्रोता में –