屏幕锁定后更新UI

时间:2012-10-03 08:50:49

标签: android broadcastreceiver start-activity

我在BrodcastReceiver的A Activity和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之前显示一秒钟。我该如何解决?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

Intent.FLAG_ACTIVITY_NO_ANIMATION

如果仍然没有解决延迟,那么尝试将活动B的代码放在AsyncTask内的处理(如数据库调用)中。