后台服务如何知道活动是否被杀死

时间:2015-03-30 16:35:11

标签: android

我有一项启动后台服务的活动。一旦启动,它就会永远运行。

让我们说后台服务需要启动它来更新某些内容的活动。然后我怎么能再次启动活动“如果它没有启动”但是如果它已经启动然后发送广播?

由于

4 个答案:

答案 0 :(得分:0)

对于活动,您指的是服务的流程。如果服务永远启动,那么它的进程就会启动它(除非系统为了恢复内存目的而终止它并在以后重新创建它)。这并不意味着其他活动/片段/服务不会被杀死。服务只是应用程序的入口点,它使您的流程在流程优先级阶梯中占据一席之地。

答案 1 :(得分:0)

很难说,因为我不知道你的应用程序的细节,但我认为你可能想要考虑一些重新设计。

正如您所注意到的,活动是短暂的。一般来说,服务不应该(不能)依赖于活动的特定活动。

事实上,精心设计的服务根本不应取决于任何特定的活动。

答案 2 :(得分:0)

您必须bind参加活动中的服务。然后,在服务中,实现onBindonUnbind方法来设置布尔“绑定”。检查布尔值以查看活动是否处于活动状态。

答案 3 :(得分:0)

我不确定我是否完全听从了你的问题。但是,当从服务通信到活动时,我在Activity类中使用广播接收器。

可以按如下方式创建:

//在您的活动类

中注册BroadcastReceiver
this.receiver = new NotificationReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("com.example.LISTENER");
registerReceiver(receiver, filter);

//插入您的活动类

class MyReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.hasExtra("command")) {
            if(intent.getStringExtra("command").equals("userRegistered")) {

            // insert code to do something when this intent is received

            }
        }
    }
}

//在您的服务类中插入以发送消息

Intent i = new Intent("com.example.LISTENER");
i.putExtra("command", "userRegistered");
sendBroadcast(i);
相关问题