android中的启动接收器,保持进程永远活着

时间:2014-01-02 09:47:25

标签: android android-service

我是android的新手,我正在一个项目中工作。

我需要的是编写一个启动接收器,当android系统通知时应该启动一个进程。此过程通过调用部署在服务器中的restful服务获取服务器日期时间并更新表的两列。

这个过程应该每秒都打勾,我应该确保这个过程一直在运行,并且android系统不应该杀死这个过程,如果它被强行杀死它应该再次重启。

我怎样才能完成它?你能提供一些指导吗?我知道如何使用一个宁静的服务,我也可以写一个启动接收器。我唯一感到困惑的是,只要android系统启动,如何确保进程始终运行。

3 个答案:

答案 0 :(得分:0)

  只要android系统启动就确保进程始终在运行

没有办法做到这一点。系统可以在发现好主意时终止您的应用。在大多数情况下,您将重新启动。在永远在线服务中使用RESTful服务似乎不是一个好主意。考虑使用推送消息(即GCM)作为应用程序的触发器

答案 1 :(得分:0)

只有接收者不能,服务可以连续运行。所以使用一个将连续运行的服务。然后从广播接收器启动服务。

答案 2 :(得分:0)

要防止您的服务被杀,唯一的方法是在前台启动它。但是使用这种方法,您必须定义一个通知,该通知将在您的服务停止之前显示。

在你的onStartCommand方法中这样做。

   NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
            .setAutoCancel(false)
            .setContentTitle(getResources().getString(R.string.app_name))
            .setContentText(getResources().getString(R.string.foreground_not_text))
            .setSmallIcon(R.drawable.ic_launcher)
            .setContentIntent(PendingIntent.getActivity(this, 0, new Intent(this, LauncherActivity.class), PendingIntent.FLAG_UPDATE_CURRENT));

    not = builder.build();

    startForeground(Constants.NETWORK_NOT_ID, not);
return Service.START_STICKY;

您的应用程序仍然可以被系统杀死,但不会是第一个被关闭的应用程序。