为什么这个简单的服务不启动?
我有一个处理程序的服务,必须每5秒在logcat中写入“Hello”。 但它不会在logcat上写任何东西……就像服务没有执行,我在它上面放置了一个断点,并且debugging模式从不停止在断点上。
我开始在我的应用程序的第一个活动的服务,与此:
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"/>
没有服务启动 , 没有错误信息 !
嗨你的代码写入工作正常。 可能是在closures应用程序标记之前忘记清单文件中的以下代码。
<application> .... <service android:name=".MyServiceNotifications"/> </application>
在清单中定义时,还需要将“enabled”属性设置为“true”,如下所示:
<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中。