应用程序在后台被杀死

时间:2013-09-18 04:03:44

标签: android sleep background-process android-lifecycle

我的应用程序向API发送gps更新。我需要我的应用程序一直在后台运行。但不幸的是,我的应用程序总是在背景时结束。我已经读过,当应用程序的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");
 }

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

2 个答案:

答案 0 :(得分:3)

你不能。

请确保,你坚持杀死任何应该存活的东西。

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

答案 1 :(得分:0)

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));
    }

}