1

我正在实施一项始终处于领先地位的活动(通常实施锁定屏幕),该算法很简单:

  1. 开始活动
  2. 禁用所有硬件按钮,禁用后按,相机锁定,音量按钮等。
  3. 每当活动暂停时,调用服务来检查并重新启动活动。

有关逻辑,请参阅这些答案:答案 1答案 2 每当 Activity 暂停并由服务重新启动时,都会有 6-7 秒的延迟。如何减少我的活动暂停和重新启动之间的时间延迟。

暂停和恢复代码:

protected void onPause() {
    isFront = false;
    Intent lockHelper = new Intent( this, LockHelper.class);
    startService( lockHelper );
    super.onPause();
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent keyEvent) {
    if(keyCode==KeyEvent.KEYCODE_CAMERA)
        return true;
    else if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN)
        return true;
    else if(keyCode==KeyEvent.KEYCODE_VOLUME_UP)
        return true;
    else if(keyCode==KeyEvent.KEYCODE_HOME)
        return true;
    else if(keyCode==KeyEvent.KEYCODE_POWER)
        return true;
    else 
        return true;
}

@Override
public boolean onKeyLongPress(int keyCode, KeyEvent keyEvent) {
    if(keyCode==KeyEvent.KEYCODE_HOME)
        return true;
    else if(keyCode==KeyEvent.KEYCODE_POWER)
        return true;
    else 
        return true;
}

@Override
public void onBackPressed() {
}

@Override
protected void onResume() {
    isFront = true;
    Intent lockHelper = new Intent( this, LockHelper.class);
    startService( lockHelper );
    super.onResume();
}

}

服务是:

public class LockHelper extends Service {
@Override
public void onStart(Intent intent, int startId) {
    if(Locker.isFront == false){
        Intent locker = new Intent( this, Locker.class);
        locker.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity( locker );
        stopSelf();
    }
}

public LockHelper() {
}

@Override
public IBinder onBind(Intent intent) {
    throw new UnsupportedOperationException("Not yet implemented");
}
}
4

2 回答 2

1

onPause、onStop 和 onDestroy 中的代码应该尽可能快地执行。也就是说,不要在这里放很多代码来阻塞这些方法。但同样,这取决于你在这里做什么。如果这些事情真的很重要,我不确定如何减少时间延迟。

于 2013-05-05T06:47:19.147 回答
0

“是如何减少我的活动暂停和重新启动之间的时间延迟。”

你测量了这两个区间发生的时间成本吗?

基本上,两种类型的任务:一种是系统任务和您的应用程序任务。

adb logcat -b system -v threadtime应该打印出与活动/服务启动/停止相关的所有系统 bahvoir,以及时间戳。

您应该/可以尽可能减少在应用程序上花费的时间,但没有办法减少系统行为的时间成本。

于 2013-05-05T07:03:36.247 回答