2014-12-15 3 views
0

안녕하세요 모두 내 목록보기 내에서 항목을 클릭 한 후로드중인 활동이 있습니다.안드로이드 MapView 로딩 블랙 스크린

이 활동은이 같은지도보기 내부의 위치를 ​​보여줍니다 :

<FrameLayout 
       android:id="@+id/mapContainer" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_toEndOf="@+id/imageView" 
       android:layout_above="@+id/button" 
       android:layout_below="@+id/imageView" 
       android:layout_alignParentStart="true" 
       android:layout_marginTop="10dp" > 

       <TextView 
        android:id="@+id/loading" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center" 
        android:text="Loading Map..." /> 

      </FrameLayout> 

문제는 내가 그/그녀가 버튼을 클릭하면 나중에 사용자에게지도를 보여주고 싶은 것이있다.

하지만 Activity가 매우 느리게로드되고 아무 것도 표시하기 전에 검은 색 빈 화면이 있습니다. 이것은 매우 비전스럽고 잘못 보입니다.

MapView 보이지 않는 부분을 먼저으로 만들고 사용자가 버튼을 눌렀을 때 표시하려고했지만 액티비티가 시작될 때로드 중입니다.

I'am 노력하고 다음 코드 :이 하나가이지도를 보여주고있다,하지만 내 활동이로드 될 때까지 활동이, 검은 색 빈 화면이 오랫동안에로드하고있다

protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_single_event); 

     mapView = new MapView(SingleEvent.this); 
     mapView.onCreate(savedInstanceState); 
     com.google.android.gms.maps.MapView.LayoutParams mapParams = new com.google.android.gms.maps.MapView.LayoutParams(com.google.android.gms.maps.MapView.LayoutParams.MATCH_PARENT,220); 
     mapContainer = (FrameLayout) findViewById(R.id.mapContainer); 
     mapContainer.addView(mapView, mapParams); 

.

enter image description here

버튼의지도보기를 클릭로드하는 첫번째 부하 활동과 이후에 어떤 방법이 있나요? 이런 식으로 뭔가를 시도

I'am는 :

Handler handler = new Handler(); 

    handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 

      mapView = new MapView(SingleEvent.this); 
      mapView.onCreate(savedInstanceState); 
      com.google.android.gms.maps.MapView.LayoutParams mapParams = new com.google.android.gms.maps.MapView.LayoutParams(com.google.android.gms.maps.MapView.LayoutParams.MATCH_PARENT,220); 
      mapContainer = (FrameLayout) findViewById(R.id.mapContainer); 
      mapContainer.addView(mapView, mapParams); 

       } 
      },1000); 

그러나 코드

,지도는 단지 회색 빈 그리드를 보여주는로드 밤은. 나는 그 때문에 savedInstanceState하지만 어쩌면 주위에 해결할 수 있다고 생각하십니까?

위와 같이로드 된 savedInstanceState 번들을 저장하려고했습니다.

+0

에 사용 동작. 포인트가 제대로 표시되지 않을 경우 포인트를로드하는 것이 좋습니다. – tyczj

+0

어쨌든 서비스를 사용할 수 있습니까? – K213

+0

서비스에는 UI가 없습니다 – tyczj

답변

0

MapFragment을 사용할 수 있습니다. onCreate()에서 공개 설정을 숨김으로 설정할 수 있습니다. 지도가 준비되면 onMapReady()이 호출되며지도 설정을 구성 할 수 있습니다.

+0

MapFragment를 사용해 보았지만 동일한 효과가 있으며, 활동이 매우 느리게로드되고 검은 색 빈 화면이 3 초 동안 표시됩니다. – K213

0

하드웨어 가속 및 대형 히팅으로 인해 발생하는 것과 동일한 문제가 발생했습니다. 필자는 응용 프로그램 수준에서 이러한 기능을 사용했습니다. 하지만 앱 수준에서 앱을 삭제하고 사용한 액티비티에 사용했습니다. SupportMapFragment이 포함 된 활동에는 이러한 기능이 필요하지 않습니다. 그래서이 코드를 Application 태그에서 Manifest의 Activity로 옮겼습니다.

문제는 Manifest에있었습니다. 그들이 그렇게 할 때

<application 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" 
     android:hardwareAccelerated="false" 
     android:largeHeap="true"> 

는이 있어야 표시됩니다 활동을 Manifest에서 제거하고지도 만 볼 수 있도록 가정하면 사용자가 특정 조치를 예비 적 때 Activity

<activity 
     android:name="com.mycompayname.activities.SignUpActivity" 
     android:hardwareAccelerated="false" 
     android:largeHeap="true"/>