Ответ 1
Вы объявили услугу в AndroidManifest.xml
?
У меня есть служба с обработчиком, который должен писать "Hello" в logcat каждые 5 секунд. Но он ничего не записывает в logcat... Это похоже на то, что служба не выполняется, и я наложил на нее точку останова, и режим отладки никогда не останавливается на контрольной точке.
Я запускаю сервис в первом действии моего приложения:
startService(new Intent(GPSLoc.this, MyServiceNotifications.class)); //enciendo el service
Я уверен, что код startService
выполняется, потому что он вызывается перед началом другого действия, и начинается другое действие.
Это код моей службы:
public class MyServiceNotifications extends Service {
boolean serviceStopped;
private Handler mHandler;
private Runnable updateRunnable = new Runnable() {
@Override
public void run() {
if (serviceStopped == false)
{
createNotificationIcon();
}
queueRunnable();
}
};
private void queueRunnable() {
// 600000 : cada 10 minutos, comprueba si hay nuevas notificaciones y actualiza la
// notification BAR
mHandler.postDelayed(updateRunnable, 5000);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
serviceStopped = false;
// //////////////////////////////////////MANEJADOR SIMILAR A UN HILO
mHandler = new Handler();
queueRunnable();
// ///////////////////////////////////// FIN MANEJADOR
}
@Override
public void onDestroy() {
serviceStopped = true;
}
@Override
public void onStart(Intent intent, int startid) {
}
public void createNotificationIcon()
{
Log.d("MyServiceNotifications", "Hello");
}
}
Вы объявили услугу в AndroidManifest.xml
?
Очень важно: правильно записать пространство имен, например:
<service android:name="com.example.data.synchronization.SynchronizationService"/>
в моем AndroidManifest.xml
ранее это было (неправильно):
<service android:name="com.example.data.SynchronizationService"/>
Служба не запущена и сообщение об ошибке!
Привет, код u write работает нормально. Возможно, вы забудете следующий код в файле манифеста, прежде чем закрывать тег приложения.
<application>
....
<service android:name=".MyServiceNotifications"/>
</application>
Также существуют обстоятельства, при которых атрибут "enabled" должен быть "истинным" при определении его в манифесте, например:
<service android:enabled="true" android:name=".MyServiceNotifications" />
Смотрите эту ссылку для получения дополнительной информации: http://developer.android.com/guide/topics/manifest/service-element.html
Если использовать Xamarin Droid, самый простой способ сделать это - пометить класс как услугу, подобную этой:
[Service]
public class LongRunningTaskService : Service
{
...
}
Тогда нет необходимости помещать его в AndroidManifest.xml.