我前面有篇文章提到 这个问题的现象记录http://blog.csdn.net/luohaowang320/article/details/18088425
1.首先,分析activity back键,响应出现 ANR的问题。
这个问题是由于在manifest的activity中 使用 Theme.NoDisplay,不显示该Activity 导致的。
android:theme="@android:style/Theme.NoDisplay"
测试代码很简单,将一个application的Activity添加上面属性,桌面运行,看不到任何界面,og的日志可以,看到该onResume已执行,你可以照常进行其他的交互,滑动分页、打开其他的应用,但是不能碰“BACK”键,否则就会出现“ANR”。深层次的原因,暂时还不清楚,有大侠知道,欢迎回复解答下。
2.解决“ANR"bug : 在改Activity的 onCreate中添加
moveTaskToBack(true);
这样,就可以正常响应back键了,但是,会导致另外的问题:onPause onDestroy 延迟执行。
当然,这个moveTaskToBack最好是写在onResume中,不然,再次显示该Activity的时候,还是会出现 ANR的问题。
3.onPause onDestroy 延迟执行分析验证。
情况一:
app A代码清单如下:
public class AMainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(getClass().getSimpleName(), "onCreate--taskId=" + getTaskId());
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.i(getClass().getSimpleName(), "onClick");
ComponentName componentName =
new ComponentName("com.example.testlanchmode2", "com.example.testlanchmode2.BMainActivity");
//启动 app2 的BActivity