2014-10-15 8 views
6

Ich entwickle eine Android-Anwendung und es verwendet GoogleMaps. Wenn ich also auf einen Button klicke, lade ich eine registraPosizioneActivity, die die Google Maps anzeigt. So habe ich festgestellt, dass die Ladegeschwindigkeit dieser Aktivität langsam ist. Gibt es einen Modus, um die Ladegeschwindigkeit dieser Aktivität zu erhöhen?Wie kann man die Geschwindigkeit erhöhen, um eine Aktivität zu laden?

Dies ist mein Code:

  protected void onCreate(Bundle savedInstanceState) { 
      try{ 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_recordposition); 
       locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
       Criteria criteria = new Criteria(); 
       criteria.setAccuracy(Criteria.ACCURACY_FINE); 
       provider = locationManager.getBestProvider(criteria, false); 
       locationManager.requestLocationUpdates(provider, 1000, 0, this); 
       settaMappa(); 
       if(myPosition==null){ 
        pDialog = ProgressDialog.show(this, "Attendere ...", "Localizzazione in corso ...", true); 
        pDialog.setCancelable(false); 
       } 
      }catch(Exception e){ 
       Log.e("Errore onCreate:",e.getMessage()); 
       Utility.generateNoteOnSD(fileName,e.getMessage()); 
      } 
     } 

     public void settaMappa(){ 
      mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map2)).getMap(); 
      mMap.setMapType(GoogleMap.MAP_TYPE_TERRAIN); 
      mMap.setMyLocationEnabled(true); 
     } 

Dies ist activity_recordposition.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:map="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#000000" 
    android:orientation="vertical" 
    tools:context=".registraPosizioneActivity" 
    android:gravity="center"> 


    <fragment 
     android:name="com.google.android.gms.maps.SupportMapFragment" 
     android:id="@+id/map2" 
     android:layout_height="0dp" 
     android:layout_weight="10" 
     android:layout_width="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment" 
     /> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" 
     android:gravity="center" 
     android:orientation="horizontal" > 

     <Button 
     android:id="@+id/buttonR" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.20" 
     android:layout_margin="20dp" 
     android:background="#0080c2" 
     android:textColor="#FFF" 
     android:textSize="20sp" 
     android:onClick="registraPunto" 
     android:text="@string/registraPunto" /> 

    <Button 
     android:id="@+id/buttonSava" 
     android:layout_width="0dp" 
     android:layout_height="fill_parent" 
     android:layout_weight="0.20" 
     android:layout_margin="20dp" 
     android:background="#0080c2" 
     android:textColor="#FFF" 
     android:textSize="20sp" 
     android:onClick="savaAreaTracciata" 
     android:text="@string/terminaRegistrazione" /> 
    </LinearLayout> 
+0

Haben Sie tatsächlich geprüft Wie lange dauert die Aktivität für die wichtigsten Lebenszyklusmethoden? –

+0

Ich habe alle Code auf onCreate-Methode kommentieren, aber die Geschwindigkeit, um meine Aktivität zu laden ist gering. – bircastri

Antwort

0

Für mich scheint es, wie Sie eine Menge Verarbeitung in der onCreate Methode tun. Versuchen Sie, einen Teil dieser Verarbeitung in einen Async-Thread zu verschieben. Ich glaube, das wird die Ladezeiten um einiges erhöhen.

So

  • laden die Aktivität auf, innerhalb der onCreate eine Async Aufgabe nach der Aktivität erforderlich
  • Async-Thread ist die Verarbeitung beginnen hat geladen :)
+0

Es gibt nichts, was wirklich aussieht, er macht viel, nur einen Location Manager einrichten und die Karte bekommen. das ist nichts – tyczj

+0

Hiya, Es kann nicht viel sein, aber er hat die Genauigkeit in Ordnung, um das Gerät, von dem er es testet, dauert eine Weile, um die GPS-Koordinaten zu bekommen und somit scheint die Aktivität nicht sehr schnell zu laden. Wenn er die Aktivität ausführt und die GPS-Verarbeitung in einem anderen Thread durchführt (Async). Die Aktivität wird fast augenblicklich angezeigt und der Async-Thread wird im Hintergrund ausgeführt :). Es wird nicht schneller, aber die Aktivität wird schneller geladen, was er wollte. – csdacac

+0

Das Abrufen eines GPS-Schlosses hat nichts mit der Geschwindigkeit zu tun, mit der eine Aktivität geladen wird. Eine Aktivität kann geladen werden, ohne jemals eine GPS-Sperre erhalten zu haben. – tyczj

Verwandte Themen