У меня есть услуга, которая каждые 10 секунд каждую неделю подписывается на нее. Это мое определение обслуживания:Служба onStop не останавливает службу.
public class MyService extends Service {
private final static String TAG = "AccountSummaryService";
public static final String BROADCAST_ACTION = "com.mypackage.mobile";
private Handler handler = new Handler();
private final int delayedStartupTime = 1000;
private Intent intent;
@Override
public void onCreate() {
super.onCreate();
intent = new Intent(BROADCAST_ACTION);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler.postDelayed(broadcast, 1000);
return START_STICKY;
}
private Runnable broadcast = new Runnable() {
@Override
public void run() {
sendBroadcast(intent);
handler.postDelayed(this, 10000);
}
};
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onDestroy() {
super.onDestroy();
this.stopSelf();
handler.removeCallbacksAndMessages(broadcast);
}
В моей деятельности я зарегистрировать/запуска и отмены/остановки servince в моих onResume/OnPause методами. Они называются так что следующий код фактически запускается на выполнение:
//in the onCreate
Intent anIntent = new Intent(activity, MyService.class);
@Override
public void onResume() {
super.onResume();
startSummaryRefreshService();
}
@Override
public void onPause() {
super.onPause();
stopSummaryRefreshService();
}
private void startSummaryRefreshService() {
activity.startService(anIntent);
activity.registerReceiver(myReceiverObject, new IntentFilter(RefreshUIService.BROADCAST_ACTION));
}
public void stopSummaryRefreshService() {
activity.unregisterReceiver(myReceiverObject);
activity.stopService(anIntent);
}
Проблема заключается в том, что даже если StopService() вызывается служба до сих пор работает, и когда я повторно зарегистрировать приемник он будет вызываться несколько раз.
В принципе ... Я не могу остановить службу в любом случае. Я пытался много решений StackOverflow, но ... нет.
В чем я ошибаюсь?
Что вы имеете в виду, когда вы «перерегистрируете мой ресивер»? Как вы это делаете? Вы снова показываете одно и то же действие? Также почему вы вызываете методы start/stop с «активностью»? Какова эта ссылка на действия? вызывая это из-за пределов кода операции? –
Хороший вопрос: на самом деле он не возобновляет свою деятельность, а фрагмент. – user2274307
Уточните или напишите больше кода –