2012-06-03 9 views
5

Ich würde möchte eine private Methode eines Android Aktivität untersuchen indem sie sie innerhalb der Tätigkeit der public static void main (String [] args) Verfahren ausführt, die ich erstellt.Wie führe ich die Hauptmethode einer Android-Aktivitätsklasse aus?

Ich benutze Eclipse-ADT und mein naiver Ansatz für den Betrieb die Aktivität als Java-Anwendung in Folge:

A fatal error has been detected by the Java Runtime Environment:
Internal Error (classFileParser.cpp:3174), pid=2936, tid=2980
Error: ShouldNotReachHere()

So schaute ich auf dem Run Configuration und fanden heraus, dass Android 3.1 ist der einzige Eintrag in der Bootstrap-Einträge Abschnitt Classpath. Ich schaffte es, die Build Path des Projekts zu konfigurieren, so dass die JRE in der Bootstrap Einträge auch ist. Dann entfernte ich den Android 3.1 Eintrag und fügte hinzu android.jar zu User Entries.

Das Ergebnis der Run Configuration Ausführung ist ein Runtime:

Exception in thread "main" java.lang.RuntimeException: Stub!
at android.content.Context.(Context.java:4)

Eine alternative einiger Tests Ausführen eines JUnit Test wäre zu feuern. Aber im Fall eines privaten Verfahrens ist dies umständlich.

Gibt es eine Möglichkeit, die Hauptmethode einer Android-Aktivitätsklasse erfolgreich auszuführen?

+1

Sie können keine 'Activity' durch eine Haupt anwerfen Methode. Das Problem bei dem Versuch besteht darin, dass das System den gesamten Aufbau der vier Bausteine ​​handhabt. Sofern Ihr [netbook läuft Android] (http://www.makeuseof.com/tag/install-android-netbook/), können Sie dies nicht tun (aber das verhindert nur, dass Sie einen Emulator verwenden müssen). Im Zusammenhang mit den JUnit-Tests ist das Android SDK mit einem Tool namens [MonkeyRunner] (http://developer.android.com/guide/developing/tools/monkeyruner_concepts.html) ausgestattet, das Sie sich vielleicht ansehen möchten. – gobernador

Antwort

4

Es ist eine weitere Option für das Problem bei der Hand, wenn die private Methode - die durch die Ausführung der untersucht werden soll eine Hauptmethode - kann in eine andere Klasse extrahiert werden. Dies bedeutet natürlich, dass die Methode plötzlich mindestens protected wurde.

Wenn die Methode innerhalb einer Klasse definiert ist, die nicht von android.app.Activity abgeleitet wird, kann eine Hauptmethode definiert werden. Sie müssen nur die Run Konfiguration in Eclipse anpassen.

  1. Führen Sie die Klasse mit Führen Sie als Java-Anwendung. Dies erzeugt eine neue Run-Konfiguration wie die Klasse mit dem Namen
  2. Bearbeiten der neu creaded Run Configuration
  3. löschen Android Bibliothek von Bootstrap-Einträge im Classpath Registerkarte
  4. hinzufügen JRE 6 oder so auf den Build Pfad des Projekts
  5. dieses JRE zu den Bootstrap-Einträge im Classpath Registerkarte
  6. In android.jar, die in den Plattformen Verzeichnis des Android SDK in Benutzer befindet Einträge im Classpath Registerkarte
0

Die Hauptmethode ist nicht der Einstiegspunkt in Android wie in Java. Sie wollen die sehr wichtig

public void onCreate(Bundle savedBunldeInstance) method. 
+0

Dies würde es mir nicht erlauben, Code in onCreate auszuführen, ohne den Emulator oder ein physisches Gerät zu starten, richtig? Aber das ist der springende Punkt. – rmoestl

+1

Nein. Sie können nichts ohne den Emulator ausführen, da Sie keine Android Virtual Machine für Ihre Architektur implementiert haben, wie Sie Java Virtual Machine haben. – snihalani

2

Aktivität außer Kraft setzen von Android-Sicht ist, Aktivität Lebenszyklus sind Sammlungen von wenigen Methoden, die durch das Leben die Tätigkeiten von OS behandelt werden.

public void onCreate(Bundle savedBunldeInstance) 

wird aufgerufen, sobald die App zum Erstellen der Aktivität gestartet wird. Dies ist der Einstiegspunkt einer Anwendung in Android. Sie müssen den Emulator oder das physische Gerät für die Ausführung der Android-App haben. Hier lautet die Datei , einmal von java compiler then by dalvik compiler.

DVM (Dalvik Virtual Machine) befindet sich auf dem Android-Gerät (EMULATOR ODER PHYSISCH), das ist der Grund, warum wir Emulator oder physisches Gerät, um es auszuführen..and onCreate ist der Einstiegspunkt dafür.

Auf Ihre Anfrage bearbeite ich diesen Beitrag mit einer zusätzlichen Information.Die folgenden Zeilen sind abstrahiert von http://developer.android.com/

Android applications don't have a single entry point. 
(there's no main() function, for example). 

für weitere Details auf diese Taste klicken:

http://developer.android.com/guide/topics/fundamentals.html 
+0

Vielen Dank, dass Sie wissen, was hinter den Kulissen vor sich geht. Upvoted. Das bedeutet, dass das Ausführen einer Hauptmethode in den Aktivitätsklassen von Android nicht mit einem ansehnlichen Aufwand zu erreichen ist, oder? Möchten Sie Ihre Antwort entsprechend bearbeiten, wenn das korrekt ist. Dann würde ich deine Antwort akzeptieren. – rmoestl

Verwandte Themen