2014-05-19 2 views
0

나는 알람 매니저를 호출하는 서비스를 정해진 시간 내에 가지고 있으며 서비스를 중지하고자합니다. 알람 관리자 만 취소하지만 내 서비스는 백그라운드에서 계속 실행 중입니다.service stop from mainActivity

입니다 주요 활동

start.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (!cd.isConnectingToInternet()) { 
       showDialog(noInternetDialog); 
      } else if (start.getText().toString().equalsIgnoreCase(getResources().getString(R.string.start_interval))) { 

       countLimit.setEnabled(false); 
       timeLimit.setEnabled(false); 

       start.setText(R.string.stop_interval); 
       start.refreshDrawableState(); 

       // To save send configuration 
       saveSendConfiguration(); 

       // Show sms to send 
       XMLParser read = new XMLParser(); 
       String numberOfUnsend = read.getXmlFromUrl(baseURL + SMScount); 
       status.setText(numberOfUnsend); 

       Intent downloader = new Intent(context, AlarmReceiver.class); 
       downloader.putExtra("time", timeLimit.getSelectedItem() 
         .toString()); 
       downloader.putExtra("count", countLimit.getSelectedItem() 
         .toString()); 
       downloader.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

       pendingIntent = PendingIntent.getBroadcast(context, 0, 
         downloader, PendingIntent.FLAG_CANCEL_CURRENT); 

       int delay = Integer.parseInt(countLimit.getSelectedItem() 
         .toString()); 
       alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, 
         10 * 1000, delay * 60000, pendingIntent); 
       Log.i(tag, "Call from main activity"); 
      } else { 
       alarmManager.cancel(pendingIntent); 
       start.setText(R.string.start_interval); 
       start.refreshDrawableState(); 
       countLimit.setEnabled(true); 
       timeLimit.setEnabled(true); 
       Log.i(tag, "Alarm Cancel"); 
      } 

     } 
    }); 

내 코드는 내 경보 수신기 코드

public class AlarmReceiver extends BroadcastReceiver { 

private static String tag = "Saeed"; 

@Override 
public void onReceive(Context context, Intent intent) { 
    Intent update = new Intent(context, IntervalService.class); 
    String time = intent.getStringExtra("time"); 
    String count = intent.getStringExtra("count"); 
    update.putExtra("time", time); 
    update.putExtra("count", count); 
    Log.i(tag, "Call service from Alaram Receiver," + time + "," + count); 
    context.startService(update); 
} 

    } 

이며, 이것은 내가로부터 서비스를 중지 할 수 있습니다 어떻게 내 서비스 코드

public class IntervalService extends IntentService { 

private static final String tag = "Saeed"; 


private String baseURL; 
private DatabaseHandler db; 
private int time; 
private int count; 

private SharedPreferences pref; 
ConnectionDetector cd; 

public IntervalService() { 
    super("Auto Interval"); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    Log.i(tag, "Interval Service implementation was run"); 
    PreferenceManager.setDefaultValues(this, R.xml.settings, false); 
    pref = PreferenceManager.getDefaultSharedPreferences(this); 
    baseURL = pref.getString("baseUrl",""); 
    db = new DatabaseHandler(this); 
    cd = new ConnectionDetector(getApplicationContext()); 
    time = Integer.parseInt(intent.getStringExtra("time")); 
    count = Integer.parseInt(intent.getStringExtra("count")); 
    new Interval().execute(); //this is async task class 
} 

입니다 내 주요 활동?

답변

0

다음을 사용할 수 있습니다.

의도 업데이트 = 새로운 의도 (context, IntervalService.class); context.stopService (update);

+0

저는 InternalService 클래스를 사용하지만 중지하지 않습니다. –

0

당신이 구성 요소는 (onStartCommand()를 호출 결과) startService()를 호출하여 서비스를 시작하면 서비스가 아니라 알람 매니저

을 취소 할 필요, 다음 서비스가 멈출 때까지 계속 실행 stopSelf() 또는 다른 구성 요소가있는 자체는 stopService()를 호출하여 중지합니다.

참조 : http://developer.android.com/guide/components/services.html