我的这个程序是开机自动运行的后台服务,没有 activity,功能是开机后自动运行服务,并每秒向服务器(PC)发送GPS经纬度,用的socket;现在程序启动后能成功运行几秒钟,然后服务就被系统自动回收了,怎么让他不回收啊,可以一直运行下去,试了好多次程序也被干掉好多次,怎样才能不让系统回收啊~~~  向服务器发送数据的功能是放在子线程里的...

解决方案 »

  1.   

    应该不是因为内存太少把你的service 回收了,service的优先级只比可见的activity 低一点,况且你在开机的时候就被kill掉了,按道理如果你没有显示的让它stop是可以一直运行下去。
    楼主试试不要开机自动运行,而是通过一个activity start这个service,看看还会发生同样的情况吗?
      

  2.   


    加上 activity 应该就不会这样了,但是我这个程序就要实现开机自动启动啊,而且不能有界面,就只有一个service
      

  3.   

    可以在init.rc里直接启动,然后去掉oneshot属性,这样当服务被kill掉时,init会重新启动此sevice
      

  4.   

    楼主你可以通过监听广播的方式 开始service 比如收到一条广播以后 打开你要的service。 这样service肯定不是挂的 。。
      

  5.   

    可以在init.rc里直接启动,然后去掉oneshot属性,这样当服务被kill掉时,init会重新启动此sevice
      

  6.   

    android好像是基于省电的原因,对更新太频繁的地图信息设置了更新时间
      

  7.   

    我用的就是广播启动的Service啊,实现的开机自动启动Service 代码如下public class STBR extends BroadcastReceiver{ private static final String ACTION = "android.intent.action.BOOT_COMPLETED";

    @Override
    public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(ACTION)){
    Intent i = new Intent(Intent.ACTION_RUN);
    i.setClass(context, ST.class);
    context.startService(i);
    }
    }
    }
      

  8.   

    LZ   我最近正在做的似乎和你实现的应用一样    留下联系方式  我们可以交流下   Q:971600050
      

  9.   

    service 里面的代码能贴上来吗?
      

  10.   

    和service里面的代码没什么关系好像,我又做个小例子,service里没有别的东西,只有一个线程里面有个死循环,每秒输出一条Log,执行7秒就被干掉了。有 Activity 程序则不会被回收,关键是我这个不能有界面,只有个服务
      

  11.   

    http://topic.csdn.net/u/20110628/10/403c0b41-cecb-4abf-b440-9b4caba3aa78.html
      

  12.   


    后去掉oneshot属性,会自动重启