0

目前我正在使用 IntentService 在 Browser.apk 中循环 url。我一直在运行它,直到电池耗尽。这是我的脏代码。=)

@Override
protected void onHandleIntent(Intent intent) {
    int size = intent.getStringArrayExtra("addresses").length;
    int counter = sp.getInt("counter", 0);
    String address = intent.getStringArrayExtra("addresses")[counter];
    Intent i = new Intent(Intent.ACTION_VIEW);

    i.setData(Uri.parse(address));
    i.setFlags(Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);

    counter++;
    if(counter == size) {
        counter = 0;
    }
    spe.putInt("counter", counter);
    spe.commit();
}

我尝试使用唤醒锁,但并非所有设备都保持唤醒状态。它适用于摩托罗拉 Xoom,但不适用于 Thinkpad 平板电脑。

除了使用唤醒锁之外,您还知道其他选择吗?或者我应该如何正确实现唤醒锁?

我可以告诉浏览器在加载 url 时我应该保持屏幕打开吗?通过使用意图或其他方式。

4

2 回答 2

1

要打开设备屏幕,如果设备处于睡眠模式,请使用以下代码:

       //acquireLock(context);
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
         boolean isScreenOn = pm.isScreenOn();
         Log.e("screen on.................................", ""+isScreenOn);
         if(isScreenOn==false)
         {
              WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.ON_AFTER_RELEASE,"MyLock");
              wl.acquire(10000);
              WakeLock wl_cpu = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"MyCpuLock");
              wl_cpu.acquire(10000);
         }
于 2012-03-26T04:04:44.387 回答
0

最佳解决方案:https ://stackoverflow.com/a/2134602/1316372

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
于 2012-05-30T21:40:26.783 回答