我在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之前显示一秒钟。我该如何解决?
答案 0 :(得分:1)
代码看起来不错。这对您的应用程序来说不是问题,Android on Screen Unlock也有与其他应用程序类似的行为。可能这也可能是因为系统可能会在从低功耗状态唤醒后暂停startActivity。因此,您可能需要在更新UI时,屏幕关闭期间或屏幕之后重新访问。
答案 1 :(得分:0)
如果延迟是由于动画从一个活动转移到另一个活动,那么您可以简单地将以下标志设置为您的意图,禁用动画,使您的活动快速可见。
Intent.FLAG_ACTIVITY_NO_ANIMATION
如果仍然没有解决延迟,那么尝试将活动B的代码放在AsyncTask
内的处理(如数据库调用)中。