为什么这个简单的服务没有启动?

我有一个具有处理程序的服务,它必须每5秒钟在 logcat 中写一次“ Hello”。但是它不会在 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");
}
}
54106 次浏览

嗨,您编写的代码运行良好。可能您忘记在关闭应用程序标记之前在清单文件中添加以下代码。

<application>
....
<service android:name=".MyServiceNotifications"/>
</application>

还有一些情况下,在清单中定义该属性时,需要将“  启用”属性设置为“真”,如下所示:

<service android:enabled="true" android:name=".MyServiceNotifications" />

更多信息请参见这个链接: http://developer.android.com/guide/topics/manifest/service-element.html

你在 AndroidManifest.xml中申报服务了吗?

非常重要: 正确地写 名称空间,例如:

<service android:name="com.example.data.synchronization.SynchronizationService"/>

在我的 AndroidManifest.xml之前是(错误的) :

<service android:name="com.example.data.SynchronizationService"/>

没有服务启动 没有错误消息

如果使用 Xamarin Droid,最简单的方法是将类标记为这样的服务:

[Service]
public class LongRunningTaskService : Service
{
...
}

然后就不需要将它放到 AndroidManifest.xml 中。

非常罕见的情况。但是,当处理多进程应用程序时,活动和服务需要在 Manifest.xml中提到 android:process

RemoteServiceBindingActivity.kt

startService(Intent(this, RemoteService::class.java))

然后

<activity
android:name=".RemoteServiceBindingActivity"
android:process=":test" />




<service
android:name=".RemoteService"
android:enabled="true"/>

没有工作。我必须添加 android:process=":test"的服务也在这样的清单:

<service
android:name=".RemoteService"
android:enabled="true"
android:process=":test"/>