我有一个包含LaunchFragment
的简单布局。按LaunchFragment
中的按钮会将其替换为MapFragment
,如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_test);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_view, new LaunchFragment()).commit();
}
@Override
public void onTriggerReplace(int id) {
switch (id){
case R.id.btn_replace_google:
launchGoogleMapsFrag();
break;
}
}
private void launchGoogleMapsFrag() {
FragmentManager fm = getFragmentManager();
fm.beginTransaction().replace(R.id.content_view, MapFragment.newInstance()).commit();
}
注意:启动片段会调用onTriggerReplace(int)
。上面粘贴的代码驻留在托管片段的活动中。
问题是替换会导致以下警告:
01-10 01:12:18.575 27820-27820/com.test.mapsprototype I/Choreographer﹕ Skipped 83 frames! The application may be doing too much work on its main thread.
延迟非常明显。有什么方法吗?
我已经知道的事情:
更新(要求): 我需要满足的唯一要求就是将它集成到一个更大的应用程序中,只要我提供片段就可以替换片段,因此我没有选择启动另一个活动。所有其他片段似乎工作正常,但地图片段导致帧跳过。