使用MapFragment替换跳过帧

时间:2015-01-10 06:30:45

标签: android android-fragments mapfragment

我有一个包含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.

延迟非常明显。有什么方法吗?

我已经知道的事情:

  • 从启动片段开始一个新活动(将有地图片段)不显示此警告,但我的要求阻止我这样做。

更新(要求): 我需要满足的唯一要求就是将它集成到一个更大的应用程序中,只要我提供片段就可以替换片段,因此我没有选择启动另一个活动。所有其他片段似乎工作正常,但地图片段导致帧跳过。

0 个答案:

没有答案