StopSelf不会停止我的服务(StopSelf does not stop my service

2019-07-04 13:39发布

谷歌搜索的时候,我已经看到了这个问题发表了很多次,一些在这个论坛是在过去几年的职位。 我从来没有见过任何人都得到一个明确的答案。

我试图做一个this.StopSelf运行2小时后停止本身前台服务()。 我试过它时,它的约束,当它的绑定。 在AVD和设备上。

它根本不起作用。 这是Android的一个bug? (运行2.3.3)。

服务如何能自行停止?

Answer 1:

如果使用前景的服务,您应该拨打:

stopForeground(true);

就像你启动它startForeground

stopSelf是指用于正常的服务。 前台服务是特殊的... :)

顺便说一句,如果您的应用程序应该在旧设备的工作,你应该检查所提供的兼容性代码在这里



Answer 2:

我发现停有把握服务的唯一方法是使用:

android.os.Process.killProcess(android.os.Process.myPid());

这种行为可以通过当那些没有完成的工作线程引起stopSelf被调用。 如果您使用的工作线程, 要小心你如何使用这个-你可能会泄漏内存,如果你不执行前行清理。



Answer 3:

我遇到了一个类似的problem.Through我搜索发现:在其他活动的onCreate方法我绑定的服务,但不解除绑定 onDestory method.After解决这个问题,当我打电话stopSelf那么服务的onDestory方法调用。 我希望它可以帮助你。

在同一时间,我找到安卓GOVER文档库。

服务可以同时起步,并没有绑定到它的连接。 在这种情况下,系统将保留该服务,只要它要么启动或有一个或多个连接到它与Context.BIND_AUTO_CREATE标志运行。 一旦没有这些情况下持有,该服务的的onDestroy()方法被调用,服务也有效地终止。 所有清理(停止线程,注销接收器)应该是完整的从后返回的onDestroy()。



Answer 4:

我遇到的这个问题selfStop()不是工作压力太大。

了解其主要思想是,该服务不会停止,

如果一个运行循环仍在运行( while(mDoWhile)例如)。

或需要任何其他问题被销毁/未注册的第一位。

因此,为了使stopSelf()stopService(intent)的作品,

实施onDestroy()服务中:

@Override
public void onDestroy()
{
    // Unregistered or disconnect what you need to
    // For example: mGoogleApiClient.disconnect();

    // Or break the while loop condition
    // mDoWhile = false;

    super.onDestroy();
}


Answer 5:

我有这个问题,搜索,我发现这个线程。 我的应用程序的问题是,当服务调用stopSelf(),结合该服务的前台活动仍在运行。 Thne stopSelf被称作但前景活动仍在绑定的服务不被破坏。 当我按回到或将主屏幕离开活动,那么该服务被破坏。 总之,当一个前台活动势必stopSelf将无法正常工作。



Answer 6:

我正面临同样的问题了。

大家都知道, Service上运行应用程序的UI Thread 。 所以,直到你Thread是在后台运行的服务,你在呼唤stopSelf()那么它不会工作。 对于您必须停止Thread ,然后再执行stopSelf()

回采所有背景后, ThreadService stopSelf()方法肯定会工作。



Answer 7:

stopSelf可能不破坏服务,如果条件不具备,但你可以stopService与应用程序上下文。 但要确保该服务不会在调用之前重新启动stopService内的服务。

stopService(applicationContext, MyService::class.java)


文章来源: StopSelf does not stop my service