【问题标题】:Application is being killed while on background应用程序在后台被杀死
【发布时间】:2013-09-18 04:03:43
【问题描述】:

我的应用程序将 gps 更新发送到 API。我需要我的应用程序一直在后台运行。但不幸的是,我的应用程序总是在后台的某个时间点结束。我读过,当应用程序的 cpu 使用率低时,应用程序会自动被杀死。我不希望这种情况发生。我已经使用以下代码在我的应用程序中的 onCreate 方法中包含了部分唤醒锁:

 powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
 wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");

然后暂停:

protected void onPause()
 {
     super.onPause();
     onBackground = true;
     wakeLock.acquire();
     Log.w("OnPause", "OnPause");
 }

我真的不知道如何防止我的应用程序被杀死。我也尝试过使用完全唤醒锁,但它已被弃用。关于如何让我的应用程序在后台保持活跃的任何想法?我从不希望我的应用程序在后台被杀死。谢谢!

【问题讨论】:

    标签: android sleep background-process android-lifecycle


    【解决方案1】:

    你不能。

    只要确保,你坚持任何应该在被杀后幸存下来的东西。

    对于应该在后台运行的任何内容,即使应用程序未向用户显示:
    使用Service 并将其设置为前台模式。

    【讨论】:

    • 这是否意味着在某些时候,应用程序将被杀死?
    • 是的,这是很自然的事情。 Android 会处理这个问题。在这里阅读更多:developer.android.com/training/basics/activity-lifecycle/…
    • 问题是:除了缓存以更快地恢复之外,不杀死暂停的活动是没有意义的。如果你真的想在后台运行代码,服务就是你想要的。
    【解决方案2】:
    public class BGService extends Service {
    
        private PowerManager powerManager;
        private WakeLock wakeLock;
    
        @Override
        public void onCreate() {
            // TODO Auto-generated method stub
            super.onCreate();
    
            powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
            wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                    "MyWakeLock");
            wakeLock.acquire();
        }
    

    在您的主要活动中调用并启动服务

    public class SendSMSActivity extends Activity {
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.demo);
            startService(new Intent(this, BGService.class));
        }
    
    }
    

    【讨论】:

    • 你能解释一下这对我的唤醒锁有什么影响吗?谢谢!
    • 您在服务中的 wack lock 调用。并且此服务将在应用启动时启动后台。您解决了您的问题吗?
    猜你喜欢
    • 2015-05-15
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    相关资源
    最近更新 更多