ActivityManager不再需要我的应用程序

时间:2013-08-26 13:30:46

标签: android android-activity

我正在开发一个需要在Android设备上运行12个小时的Android应用程序。 该设备除了使用此应用程序外什么都不做,所以它总是在前台。 在一个可变延迟后,我的应用程序被操作系统杀死了这条消息:

I/ActivityManager(  360): No longer want com.my.app (pid 1234): empty for 10292s
I/qtaguid (  360): Failed write_ctrl(s 0 10066) res=-1 errno=1
W/NetworkManagementSocketTagger(  360): setKernelCountSet(10066, 0) failed with errno -1
I/WindowState(  360): WIN DEATH: Window{415f9718 u0 SurfaceView}
I/WindowState(  360): WIN DEATH: Window{415b8f08 u0 com.my.app/com.my.app.MainActivity}
W/WindowManager(  360): Force-removing child win Window{415cc938 u0 SurfaceView} from container Window{415b8f08 u0 com.my.app/com.my.app.MainActivity}

我的应用程序正在显示带有VideoView的本地html文件,并使用服务与服务器保持实时连接。 我认为这可能与服务有关,但我无法找到相关的线索。 有没有办法得到这种错误的堆栈?

修改

我尝试在没有任何服务的情况下运行我的应用程序,问题仍然存在,因此与服务无关。

编辑2:

这是我启动服务的代码。

活动

     private ServiceConnection mConnection = new ServiceConnection() {
        public void onServiceConnected(ComponentName className,IBinder binder) {

            Log.d("ServiceConnection", "Service connected");

            SocketClientBinder rmBinder = (SocketClientBinder) binder;
            socketService = rmBinder.getService();
            isBound = true;

        }

        public void onServiceDisconnected(ComponentName className) {
            isBound = false;
        }
    };

    public void onDestroy() {
            //we unbind our service to avoid keeping the connection
            if (isBound) {
                unbindService(mConnection);
                isBound = false;
            }
        super.onDestroy();
    }

    public void onStart() {
            super.onStart();
            if( ! isBound) {
                //We bind our activity with our service
                Intent intent = new Intent(this, SocketClientService.class);
                bindService(intent, mConnection, Context.BIND_AUTO_CREATE | Context.BIND_WAIVE_PRIORITY | Context.BIND_ADJUST_WITH_ACTIVITY | Context.BIND_IMPORTANT);
            }
    }

1 个答案:

答案 0 :(得分:2)

  

空流程

     

不包含任何活动应用程序组件的进程。该   保持这种过程活着的唯一理由是缓存   目的,在下次组件需要时改善启动时间   跑在里面。系统经常杀死这些过程以平衡   进程缓存和底层之间的整体系统资源   内核缓存。

http://developer.android.com/guide/components/processes-and-threads.html