【问题标题】:Android: Service stops when Activity is closedAndroid:活动关闭时服务停止
【发布时间】:2010-11-23 00:26:03
【问题描述】:

如果我理解正确, 带有 BIND_AUTO_CREATE 的 bindService() 将启动一个服务,并且在所有绑定都解除绑定之前不会终止。

但如果我在 onCreate() 处 bindService(BIND_AUTO_CREATE) 并点击返回按钮以关闭 活动,服务调用 onDestroy() 并且也死亡。

我不会在任何时候调用 unbind()。 那么这是否意味着当 Activity 被破坏时,绑定也被破坏,服务也被破坏?

如果我希望服务在活动开始的同时始终运行怎么办 我要绑定它以便访问服务?

如果我在 onCreate() 调用 StartService() 然后调用 bindService(),它将在每次启动 Activity 时重新启动服务。 (我不想要)。

所以我可以先启动一次服务,然后在下次启动活动时绑定吗?

【问题讨论】:

    标签: android service bind


    【解决方案1】:

    您需要使用startService,以便在绑定到它的活动被销毁时不会停止服务。

    startService 将确保服务正在运行,即使您的活动被破坏(除非它因为内存限制而停止)。当您调用startService 时,会在服务上调用onStart 方法。它不会重新启动(终止并重新启动)服务。所以这取决于你如何在服务上实现onStart 方法。然而,Service 的 onCreate 只被调用一次,因此您可能希望在那里进行初始化。

    【讨论】:

    • 如何通过我的活动与服务进行通信?说,我想在完成某些工作后从服务向活动发送通知。该服务会定期执行一些工作。
    • 我用 BIND_AUTO_CREATE 调用 bindService() :当 Activity 关闭时服务停止;我打电话 startService() ,没关系。谢谢。
    • 你能详细说明一下吗?我面临服务问题
    【解决方案2】:

    我找到了解决办法!

    问题是当你关闭你的activity并且你的服务没有被配置为前台服务时,android系统会将它识别为未使用并关闭它。

    这是我添加通知的示例:

    void setUpAsForeground(String text) {
        PendingIntent pi = PendingIntent.getActivity(getApplicationContext(), 0,
                new Intent(getApplicationContext(), MainActivity.class),
                PendingIntent.FLAG_UPDATE_CURRENT);
        mNotification = new Notification();
        mNotification.tickerText = text;
        mNotification.icon = R.drawable.muplayer;
        mNotification.flags |= Notification.FLAG_ONGOING_EVENT;
        mNotification.setLatestEventInfo(getApplicationContext(), "MusicPlayer",
                text, pi);
        startForeground(NOTIFICATION_ID, mNotification);
    
    }
    

    (前台服务是一种服务,它正在做用户主动意识到的事情(例如播放音乐),并且必须作为通知向用户显示。这就是我们在此处创建通知的原因)

    【讨论】:

    • 如果你分享整个例子会更好,比如startForeground()方法是什么?
    • Android 中的前台服务是一种后台服务,即使在父应用程序关闭后仍会继续运行。它以 (int id, Notification notification) 作为参数。
    • 你能分享它的代码吗?如果可以,请在您的答案中更新它。
    【解决方案3】:

    您可以使用广播接收器来做到这一点。你会在谷歌上找到很多如何使用它们

    【讨论】:

    • 你是在建议 intentService 和 broadcastReceiver 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 2021-01-03
    • 1970-01-01
    相关资源
    最近更新 更多