2013/11/12

App bat araztatzen - Eclipseren Logcat-a

App-en araztatzea edota depurazioa burutzeko eclipsek logcat izeneko erreminta eskeintzen du. Programazio bitartez log ezberdinak bidal daitezke logcat consolara eta ondorioz App-aren exekuazioaren jarraipena modu bisualean burutu daiteke (Ikus I. Ilustrazioa).

I. Ilustrazioa: Eclipseren logcat-a



Beste logging framework-en antzera, Android-en log mezuak kritikotasunaren arabera sailkatzen dira (kolore ezberdina hartzen dute logcat-ean, Ikus II. Ilustrazioa):
  • Error 
  • Warning 
  • Info 
  • Debug 
  • Verbose
Log mezuak bidaltzeko, kritikotasun maila bakoitzari dagokion metodo estatiko batzuk eskeintzen ditu androiden API-ak android.util.Log class-earen bitartez: e(), w(), i(), d() eta v() metodoak hurrenez hurren. Metodo hauetan honako informazioa gehitu ahalko da (Ikus I. Ilustrazioa):

  • Mezuaren data eta ordua.
  • Kritikotasuna.
  • Mezua sartuko duen prozesuaren PID.
  • Mezuaren larritasun maila.
  • Mezua identifikatuko duen TAG-a: TAG hauek erabiliz logcat-ak ematen dituen mezuetan iragazkiak jar daitezke, soilik interesatzen zaizkigun mezuak edota log-ak ikusteko.
  • Mezuaren textua.
Jarraian azaltzen den kodearekin modu sinplean ikus daiteke nola bidal daitezkeen log mezuak logcat lehiora. Kritikotasun maila bakoitzeko log bat bidaltzen da (ohartu App honetan ez dugula erabiltzailearentzat pantailarik bistararatzen). II. Ilustrazioan azaltzen den moduan eta aurretik aipatutakoarekin bat eginik, mezuaren kritikotasunaren arabera kolore ezberdineko itxura hartzen du mezu mota bakoitzak.

public class MainActivity extends Activity {
  
    private static final String LOGTAG = "AndroidLogak";
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.activity_main);
 
        Log.e(LOGTAG, "Errore mezua");
        Log.w(LOGTAG, "Warning mezua");
        Log.i(LOGTAG, "Informazio mezua");
        Log.d(LOGTAG, "Araztatze mezua");
        Log.v(LOGTAG, "Verbose mezua");
    }
}


II. Ilustrazioa: Logcat mezu motak
Praktika egokia da logcat-aren funtzionamendua aplikatzeko eta android App-en bizi zikloa ulertzeko honako App hau praktikan jartzea: activity bat pasa daitekeen egoera guztietako metodoak implementatzea eta bakoitzean log mezu bat bidaltzea egoera batetik bestera pasa dela bermatzeko:


public class Main extends Activity {
 
 String TAG="INFORMAZIOA";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Log.i(TAG,"onCreate-tik pasa da!");
    }
    
    @Override
 protected void onStart() {
  // TODO Auto-generated method stub
  super.onStart();
  
  Log.i(TAG,"onStart-etik pasa da!");
 }

    @Override
 protected void onResume() {
  // TODO Auto-generated method stub
  super.onResume();
  
  Log.i(TAG,"onResume-tik pasa da!");
 }

    @Override
    protected void onPause() {
     // TODO Auto-generated method stub
     super.onPause();
     
     Log.i(TAG,"onPause-tik pasa da!");
    }

    @Override
    protected void onStop() {
     // TODO Auto-generated method stub
     super.onStop();
     
     Log.i(TAG,"onStop-etik pasa da!");
    }
    
    @Override
    protected void onRestart() {
     // TODO Auto-generated method stub
     super.onRestart();
     
     Log.i(TAG,"onRestart-etik pasa da!");
    }

    @Override
    protected void onDestroy() {
     // TODO Auto-generated method stub
     super.onDestroy();
     
     Log.i(TAG,"onDestroy-etik pasa da!");
    }

}

App-aren aktibitia egoera guztietatik pasatzen dela egiaztatzeko ADT emuladorea martxan jarri eta aplikazio exekutatu. Dena behar bezala joan bada 3 informazio mezu jaso beharko lirateke: onCreate-tik, onStart-tik eta onResume-tik pasatakoak. Ondoren gailuaren Home botoiari sakatu eta beste 2 mezu azalduko dira: onPause-tik eta onStop-etik lortutakoak. Berriz aplikazioa exekutatu gailuan azkeneko activity-ak fokua har dezan eta beste 3 mezu agertuko dira logcat-ean: onRestart-ek, onStart-ek eta onResumek emandakoak. Azkenik atzera botoia sakatu activity-a FIFO pilatik ezabatzeko eta beste 3 mezu jasoko dira: onPause-ko, onStop-eko eta onDestroy-eko pasaerek sorrarazitakoak.