1

我在 BrodcastReceiver 中的 A 活动和 i B 活动中。

@Override
    public void onReceive(final Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            //start activity

            ((Activity) context).runOnUiThread(new Runnable(){
              public void run(){
                    Intent i = new Intent(context, Pause.class);
                    i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK
                      | Intent.FLAG_ACTIVITY_CLEAR_TOP
                      | Intent.FLAG_ACTIVITY_SINGLE_TOP);

              context.startActivity(i);

                  }
                });

            wasScreenOn = false;

        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {

            wasScreenOn = true;
        }
    }

问题是,当解锁屏幕时,活动 A 在显示活动 B 之前出现一秒钟。我该如何解决?

4

2 回答 2

1

代码看起来不错。这不是您的应用程序的问题,Android on Screen Unlock 与其他应用程序也有类似的行为。可能这也可能是因为系统可能会在 startActivity 从低功耗状态唤醒后暂停它。因此,您可能希望在更新 UI 时、屏幕关闭期间或屏幕打开后重新访问。

于 2012-10-03T08:57:47.340 回答
0

如果延迟是由于动画从一个活动过渡到另一个活动,那么您可以简单地将以下标志设置为禁用动画的意图,使您的活动快速可见。

Intent.FLAG_ACTIVITY_NO_ANIMATION

如果它仍然无法解决延迟问题,请尝试将可能需要时间处理的活动 B 的代码(如数据库调用)放入AsyncTask.

于 2012-10-03T08:59:06.090 回答