私は、アプリケーション内のすべてのアクティブ/実行中のスレッドを取得しようとしています。私は以下のコードを書きました。私は以下の結果を得ました。 実際には、掲載出力内のスレッドのどれもが私のアプリケーションで実行中のスレッドを取得する方法
07-10 15:36:48.621 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[IntentService[GcmIntentService],5,main]
1を除いて、私のアプリケーションに属していない)数5は何を示しているのでしょうか?
2) 'getAllStackTraces'はシステム全体のすべてのアクティブなスレッドを取得するようですが、私のアプリケーションでのみ実行されているスレッドを取得するにはどうすればよいですか?
コード:
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
Thread[] threadArray = threadSet.toArray(new Thread[threadSet.size()]);
Thread thread = null;
for (int i = 0; i < threadArray.length; i++) {
thread = threadArray[i];
Log.d(TAG, "thread.toString():" + thread.toString());
}
が出力:
07-10 15:36:48.621 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[IntentService[GcmIntentService],5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[FinalizerWatchdogDaemon,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Timer-0,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[RenderThread,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[ReferenceQueueDaemon,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[FinalizerDaemon,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Binder_3,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[main,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Signal Catcher,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Binder_1,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Binder_2,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[GCDaemon,5,system]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[pool-1-thread-1,5,main]
07-10 15:36:48.622 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[JDWP,5,system]
07-10 15:36:48.623 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[HeapTrimmerDaemon,5,system]
07-10 15:36:48.623 19333-19624/eu.men.m2sapp D/GcmIntentService: thread.toString():Thread[Thread-52709,5,main]
plus1。自分のコードから始まったスレッドを取得する方法を教えてください。 – user2121
@ user2121:起動時に追跡してください。あなたが 'IntentService'という名前の独自のクラスを作成することを決めた場合を除き、フレームワークはすべてのスレッドを開始しました。 – CommonsWare
私はIntentServiceからスレッドを開始したことをどのように知っていたのですか?ok、IntentServiceはAndroidクラスですが、IntentServiceを除いて、スレッドが特定のクラスから開始したかどうかを知る方法を事前に知っていますか?クラス名の後ろに[]で囲まれた角かっこがあるからでしょうか? – user2121