2016-06-22 6 views
0

他の誰かが開発したプロジェクトに悩まされています。その非常に大きなアプリです。だから私は流れを知りたいコードを理解するために、基本的に私の電話で現在実行されているアクティビティ(コード中のjavaファイル)の名前です。私はすべての活動にブレークポイントを入れることができますが、それ以外の方法はありますか?アプリケーションのデバッグ中に現在実行されているアクティビティを確認する方法

+1

run 'adb shell dumpsys activity top' – pskink

答えて

0

シンプル -

このような各活動のオーバーライドONSTART()メソッドと印刷ログで -

@Override 
    protected void onStart() { 
     super.onStart(); 
     Log.d("TAG -> ", "YOUR_ACTIVITY_NAME"); 
    } 

活動は、あなたのデバイスで起動すると、それはlogcatにログインし印刷します。それが助けてくれることを願って!

2

ActivityLifecycleCallbacksを使用すると、すべてのアクティビティに対して処理を追加する必要はありません。登録を一度、それはすべての活動のために働く、それはそれです!

public class MyApplication extends Application implements 
    ActivityLifecycleCallbacks{ 

@Override 
public void onCreate() { 
    super.onCreate();   
} 

@Override 
public void onActivityStopped(Activity activity) { 
    Log.i("Tracking Activity Stopped", activity.getLocalClassName()); 

} 

@Override 
public void onActivityStarted(Activity activity) { 
    Log.i("Tracking Activity Started", activity.getLocalClassName()); 

} 

@Override 
public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 
    Log.i("Tracking Activity SaveInstanceState", activity.getLocalClassName()); 
} 

@Override 
public void onActivityResumed(Activity activity) { 
    Log.i("Tracking Activity Resumed", activity.getLocalClassName()); 
} 

@Override 
public void onActivityPaused(Activity activity) { 
    Log.i("Tracking Activity Paused", activity.getLocalClassName()); 
} 

@Override 
public void onActivityDestroyed(Activity activity) { 
    Log.i("Tracking Activity Destroyed", activity.getLocalClassName()); 
} 

@Override 
public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 
    Log.i("Tracking Activity Created", activity.getLocalClassName()); 
    } 
} 

あなたはactivity.getLocalClassName()を経由してその活動を識別することができます。

+0

これは私のためには機能しません。私のアプリケーションクラスはMultiDexApplicationを拡張しています。そのためですか? – Isj

+0

このようにアプリケーションクラスを拡張する必要はありません。 getApplication()。registerActivityLifecycleCallbacks(mCallbacks)、https://gist.github.com/alexjlockwood/6298122も参照してください。スニペットは一例に過ぎず、他のユースケースにも簡単に適応できます。 – David

0

マニフェストフィギュアアウトアクティビティを起動し、使用されているメソッドと変数を調べるために、「Find Usages」(Ctrl + G)を使用できます。

0

アプリケーションがMultiDexApplicationクラスを拡張している場合、ここでは実用的な解決策です。

のonCreate()MultiDexApplicationを拡張し、アプリケーションクラスのメソッドは、コールバックを登録するには、次の行を追加します。

@Override 
public void onCreate() { 
    super.onCreate(); 
    registerActivityLifecycleCallbacks(new MyActivityLifecycleCallbacks()); 
} 

は今ActivityLifecycleCallbacks従う

private static final class MyActivityLifecycleCallbacks implements ActivityLifecycleCallbacks { 
     public void onActivityCreated(Activity activity, Bundle bundle) { 
      Log.v("Application","Created"); 
     } 
     public void onActivityDestroyed(Activity activity) { 
      Log.v("Application","Destroyed"); 
     } 
     public void onActivityPaused(Activity activity) { 
      Log.v("Application","Paused"); 

     } 
     public void onActivityResumed(Activity activity) { 
      Log.v("Application","Resumed"); 


     } 
     public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 
      Log.v("Application","onActivitySaveInstanceState"); 
     } 
     public void onActivityStarted(Activity activity) { 
      Log.v("Application","Started"); 
     } 
     public void onActivityStopped(Activity activity) { 
      Log.v("Application","Stopped"); 
     } 
    } 

として今、あなたはあなたが必要とする任意のオーバーライドされたメソッドでactivity.getLocalClassName()を使用することを実装内部クラスを作ります。

これですべてが必要になります。ハッピーデバッグ:)

関連する問題