Невозможно завершить службу, созданную в Android, она продолжает работать после stopService. Запускаем службы следующим образом:
Intent i = new Intent(this, MyService.class);
startService(i);
Связанная запись манифеста:
<service android:name=".services.MyService" ></service>
Суть MyService будет сохраняться в нескольких действиях, поэтому я не использовал IntentService:
package com.sample.app.services;
public class MyService extends Service {
public static final String TAG = MyService.class.getSimpleName();
private Handler handler;
protected void onHandleIntent(Intent intent) {
handler.post(new Runnable() {
@Override
public void run() {
Toast.makeText(getBaseContext(), "MyService Intent... Start", Toast.LENGTH_LONG).show();
}
});
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handler = new Handler();
myProcessing();
// This will cause the service to hang around
return (START_STICKY);
}
@Override
public IBinder onBind(Intent intent) {
return (null);
}
@Override
public void onDestroy() {
super.onDestroy();
}
}
В различных действиях и даже пытался это сделать в onDestroy () выше, до super.onDestroy (); выше я пробовал следующее:
Intent i = new Intent(this, MyService.class);
stopService(i);
MyService просто продолжает работать. Я считаю, что сервис по определению является синглтоном.
1 ответ
Если вы хотите остановить обслуживание, вы можете сделать это двумя способами:
1) Вызовите stopself () внутри класса обслуживания.
2) Используя stopService ().
В вашем случае, говоря, что ваш класс обслуживания находится в другом пакете (даже если он находится в одном пакете, это нормально), лучше использовать фильтр намерений для вашей службы, который упрощает остановку и запуск службы, как показано ниже.
<service android:name=".services.MyService" android:enabled="true">
<intent-filter android:label="@string/myService" >
<action android:name="custom.MY_SERVICE"/>
</intent-filter>
</service>
И добавьте это в свой класс обслуживания
public static final String ServiceIntent = "custom.MY_SERVICE"
А затем вы можете запустить или остановить службу, как показано ниже.
startService(new Intent(MyService.ServiceIntent));
stopService(new Intent((MyService.ServiceIntent));
Надеюсь, это будет полезно. Спасибо
Похожие вопросы
Новые вопросы
android
Android — это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфонов, планшетов, автомобилей, телевизоров, одежды, очков, IoT). Для тем, связанных с Android, используйте теги, специфичные для Android, такие как android-intent, android-activity, android-adapter и т. д. Для вопросов, отличных от разработки или программирования, но связанных с Android framework, используйте эту ссылку: https://android .stackexchange.com.