我开发了一个应用程序,其中包含一个带有文章列表的主屏幕。如果单击它,您将在另一个屏幕中访问详细信息。
我实现了 ActionBarSherlock,所以我为此活动使用了“向上”按钮模式。
然后我向这个应用程序添加了一个小部件。当您单击小部件时,您可以直接访问详细活动。
“向上”按钮已按照 Google 的建议 ( http://developer.android.com/training/implementing-navigation/ancestral.html ) 实施。
我的问题是,在 API 级别 15 及以下,它运行良好。它调用以下代码:
@Override
public boolean shouldUpRecreateTask(Activity activity, Intent targetIntent) {
String action = activity.getIntent().getAction();
return action != null && !action.equals(Intent.ACTION_MAIN);
}
但是在 JellyBean 上,使用的代码是:
public boolean shouldUpRecreateTask(Intent targetIntent) {
try {
PackageManager pm = getPackageManager();
ComponentName cn = targetIntent.getComponent();
if (cn == null) {
cn = targetIntent.resolveActivity(pm);
}
ActivityInfo info = pm.getActivityInfo(cn, 0);
if (info.taskAffinity == null) {
return false;
}
return !ActivityManagerNative.getDefault().targetTaskAffinityMatchesActivity(mToken, info.taskAffinity);
} catch (RemoteException e) {
return false;
} catch (NameNotFoundException e) {
return false;
}
}
如果必须重新创建堆栈,该方法的第一部分会检索有关应加载的活动的信息。
但我仍然不明白这条线是什么:
!ActivityManagerNative.getDefault().targetTaskAffinityMatchesActivity(mToken, info.taskAffinity);
任何人都可以在这条线上帮助我,我真的需要找出如何通过初始化一切来获得 true 吗?