如何自行停止服务?

Mak*_*ing 43 android

我在一个活动中启动服务,然后我希望服务在一段时间后停止运行.

我在服务中调用了stopSelf()但它不起作用.

如何使服务停止?

Ali*_*aka 66

通过说"不起作用",我猜你的意思onDestroy()是不调用服务的方法.

我有同样的问题,因为我使用标志BIND_AUTO_CREATE 一些ServiceConnection 绑定到服务本身.这会导致服务保持活动状态,直到每个连接都未绑定.

一旦我改为使用无标志(零),我自己杀死服务没有问题(stopSelf()).

示例代码:

final Context appContext = context.getApplicationContext();
final Intent intent = new Intent(appContext, MusicService.class);
appContext.startService(intent);
ServiceConnection connection = new ServiceConnection() {
  // ...
};
appContext.bindService(intent, connection, 0);
Run Code Online (Sandbox Code Playgroud)

杀死服务(不是流程):

this.stopSelf();
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.


sne*_*oid 19

通过呼叫stopSelf(),服务停止.

请确保后台没有运行任何线程,这会让您感觉服务没有停止.

在线程中添加打印语句.

希望这可以帮助.


ton*_*gil 5

因为你没有发布你的代码,我无法确切知道你在做什么,但你必须声明你停止了什么:

this.stopSelf();
Run Code Online (Sandbox Code Playgroud)

如:

public class BatchUploadGpsData extends Service {
    @Override
    public void onCreate() {
        Log.d("testingStopSelf", "here i am, rockin like a hurricane.   onCreate service");
        this.stopSelf();
    }
Run Code Online (Sandbox Code Playgroud)

  • 如果我错了,请纠正我,但是如果没有"这个"的工作也不会停止自我() (3认同)
  • 这不是必需的,但为了清楚起见添加它也无妨 (2认同)