我有一項服務,每訂閱一個活動每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);
}
在我的活動我註冊/啓動和註銷/在我的onResume /的onPause方法停止servince。 他們被稱爲所以下面的代碼實際上得到執行:
//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解決方案,但是......沒辦法。
我該怎麼弄錯?
什麼你的意思是什麼時候你「重新註冊我的接收器」?你如何做到這一點?你是否再次展示相同的活動?還有,你爲什麼要用「活動」來調用啓動/停止方法?什麼是活動參考?從活動代碼外面調用它? –
好問題。它實際上不是重新開始活動,而是一個片段。 – user2274307
需要詳細說明?或發佈更多代碼? –