2014-09-10 36 views
1

我使用粘性的Android服务通过使用代码片段在服务类如果应用程序管理器中的用户停止应用程序,则希望重新启动服务。

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    return START_STICKY; 
}  

但只有重新启动时应用程序获取武力封闭的Android O/S,虽然当用户强制停止应用从应用程序管理器,服务也终止。 但是,我的要求是,我想永远保持运行服务,直到应用程序安装在设备中。 任何人都可以帮助我吗?

+0

你的服务做什么?如果它一直在运行,那么就会出现设计问题,因为这会消耗电池。防止用户杀死你的服务让我看起来像你正在做的事你不想让用户知道/控制... – Nicklas 2014-09-10 16:04:35

+0

是的尼克拉斯,我明白这个问题,但它是客户端的要求,它的应用程序功能,希望跟踪登录的用户是否安装了应用程序。 – Pankaj 2014-09-11 05:15:52

+0

与其他解决方案相比,您可能仍然更适合使用不同的服务。您可以在卸载应用程序时注册广播,并向服务器发送消息。除此之外,如果服务器在当前时间内没有收到设备发送的消息(如果用户在卸载时没有连接到互联网),则可以认为应用程序已卸载。就“登录”状态而言,你的意思是用户是否登录到应用程序或主动使用该设备?无论哪种情况,您都不需要服务来检查这一点。 – Nicklas 2014-09-11 10:29:27

回答

-1

您可以使用Forground Service使您的服务活着。

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    Notification notification=new Notification(R.drawable.icon,"The Service Is Running",System.currentTimeMillis()); 
    Intent j=new Intent(this, Activity.class); 
    PendingIntent pi=PendingIntent.getActivity(this, 0, 
      j, 0); 

    notification.setLatestEventInfo(this, "Notification Message", "RunningService", pi); 
    notification.flags|=Notification.FLAG_NO_CLEAR; 

    startForeground(1, notification); 


    return START_STICKY; 
} 
+0

如果用户选择停止应用程序管理器的应用程序,这个Forground Service将如何工作? – Pankaj 2014-09-10 14:41:00

+0

@Pankaj:该服务将活着,直到通知在那里。当设备处于低可用内存时,它可能会终止 – 2014-09-10 16:29:21

+0

嗨Arash,我刚刚尝试了您的代码,当我运行该应用程序时,显示了通知,但一旦我停止从应用程序管理器(强制停止)的应用程序通知消失了,服务终止。在这里我想继续跑步。希望你能帮上忙。 – Pankaj 2014-09-11 05:11:59

-1

它不可能。但是你可以使用前台服务。在低内存的情况下android操作系统可以杀死前台服务

相关问题