【发布时间】:2012-01-02 12:47:53
【问题描述】:
在三星 Galaxy Tab 10.1" (Android 3.1) 上运行下面的简单测试活动时,在 TestActivity2 启动之前,我看到主屏幕背景短暂闪烁。
没有看到这个闪光灯
- 在没有 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 的情况下运行时
- 在运行 Android 2.3 的 Galaxy Tab 7" 上运行时
知道是什么导致了这种闪光以及如何避免它吗?
public class TestActivity1 extends Activity
{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView t = new TextView(this);
t.setText("TestActivity1");
t.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//start TestActivity2
Intent intent = new Intent(getApplicationContext(), TestActivity2.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(intent);
}
});
setContentView(t);
}
}
在比较使用和不使用 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 的测试运行的 LogCat 时,我注意到以下差异。
使用 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
... INFO/SurfaceFlinger(223): id=71 已删除 com.zappware.test/com.zappware.test.TestActivity1 idx=2 Map Size=3
没有 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET
... INFO/SurfaceFlinger(223): id=75 已删除 com.zappware.test/com.zappware.test.TestActivity1 idx=3 Map Size=3
也许这有帮助?
【问题讨论】:
-
使用 Intent.FLAG_ACTIVITY_CLEAR_TOP 重新启动 TestActivity1 时会发生同样的情况
-
你为什么首先使用标志?您是否尝试过制作 XML 文件并将内容视图设置为该文件?
-
@sfratini :当我开始一项包含一些详细信息的活动时,我正在使用此标志。当用户按下主页时,我不想返回此详细信息页面,而是返回更一般的概览活动。
-
@sfratini 我一直在寻找清单中的 FLAG_ACTIVITY 常量和值之间的映射,但找不到(任何指针?):我假设 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET 映射到 android:finishOnTaskLaunch (以及什么是 FLAG_ACTIVITY_CLEAR_TOP 的等价物吗?)。如果我使用清单中的 android:finishOnTaskLaunch 并且不在代码中设置它,则没有闪存!这很有趣,但我当然想了解为什么它们的行为不同。
-
我还注意到,在调用 startActivity 之后添加对 overridePendingTransition(0,0) 的调用可以避免闪烁的背景图像。再次有趣,但知道为什么这会有所不同吗?
标签: android android-intent android-3.0-honeycomb android-3.1-honeycomb