BlockCannery-強力なAndroidプログラムデバッグツールで、簡単にカートンを見つけることができます.
5328 ワード
まだプロジェクトのメモリ漏洩に悩んでいますか?まだカートン現象のために原因が見つからないのですか?今日は強力なデバッグツールを紹介します.*BlockCannery*です.これを学んだら、あなたは多くの収穫を得ることができると信じています.
BlockCannery-Android Appインタフェースカートンの元凶を簡単に見つける
BlockCanaryはAndroidプラットフォームの1つで、アプリケーションは抽象クラスを実現するだけで、このコンポーネントに必要なコンテキスト環境を提供し、普段アプリケーションを使用するときにメインスレッド上の各種カードの遅い問題を検出し、コンポーネントが提供した各種情報を通じて原因を分析し、修復することができる.
BlockCanaryにはいくつかの異なるバージョンがあり、以下のように改善されています. 1.5.0 デバッグモードで監視を停止できるコンテキストを追加します. 1.4.1エラーの修正 1.4.0エラー修正、コンテキストにonBlockブロッキングを追加します. 1.3.1 ラベルとアイコンの構成を有効にします. 1.3.0 ホワイトリストと注目パッケージ機能を追加します.
まず効果図を見てみましょう.
コードはDemoFragmentを指しています.JAvaの109行目
使用方法:最初のステップ: ここにいるよxmlでの構成:第2ステップ: 独自のアプリケーションを実現し、onCreate()メソッドに追加します.第3ステップ 監視アプリケーションのラベルとアイコンはxhdpi drawableディレクトリとstringsで使用できます.xmlに描画可能なブロックカナリア図を配置して構成します.
ステップ4でdemoを実行すればいい
ここでは、関連する例を書きました.
*使用例demo接続:*https://github.com/androidstarjack/MyBlockCanaryTest
関連紹介*非侵入式*で、簡単な2行で監視を開き、あちこちで打つ必要がなく、コードの優雅性を破壊します. *精確*で、出力された情報は問題点(行まで精確)を特定するのに役立ち、Logcatのようにゆっくり探す必要はありません.現在、コアモニタ出力ファイルとUI表示カートン情報機能が含まれています.Android端子のみサポートされています.
もし私たちがMessage/Looper/Handlerシリーズの靴をよく知っていたら、Looper.JAvaでは、
すなわち、アプリケーション全体のプライマリ・スレッドは、このlooperのみで、handlerがいくらあっても最後にここに戻ります.
cpuBusy判断:
ここまで来て皆さんはよく知っていますか.原理は参考の簡書の作者がhttp://www.jianshu.com/p/cd7fc77405ac.ここで深く感謝します.
BlockCanaryパラメータの解読 cpuCore:携帯電話のcpu個数. processName:パッケージ名を適用します. freeMemory:携帯電話のメモリ残量、単位KB. totalMemory:携帯電話内訓総和、単位KB. timecost:このMessage(イベント)実行時間、単位ms. threadtimecost:このMessage(イベント)実行スレッド時間(スレッドの実際の実行時間、他のスレッドがcpu時間を占有することを含まない)、単位ms. cpubusy:trueはcpu負荷が重すぎることを示し、falseはcpu負荷が重くないことを示す.cpu負荷が重すぎるとMessage(イベント)がタイムアウトし、エラーは本イベント処理にありません.
BlockCanaryカートン検出プロセス
BlockCanaryは、UIスレッドの現在のスタック情報を保存するスレッドを開始し、スタック情報およびCPU情報をmThreadStackEntriesおよびmCpuInfoEntriesにそれぞれ保存し、各情報を時間撮影してkeyとして保存します.
BlockCanaryは、イベントの開始終了時間を取得するためにloggingを登録しています.イベント処理時間が閾値(デフォルト値1 s)を超えることが検出されると、mThreadStackEntriesからT 1~T 2の間のスタック情報が検索され、mCpuInfoEntriesからT 1~T 2の間のCPUおよびメモリ情報が検索される.情報をフォーマットしてローカルファイルに保存し、ユーザーに通知します.
動作原理フローチャート:
現在、アリ内の複数のAndroidプロジェクトにアクセスし、BlockCanaryを使用してAndroidアプリケーションのパフォーマンスを最適化していることが知られています.
BlockCanneryは使いやすいし、LeakCanaryを使ってメモリの漏れや解決策を検出することもできます.
また、Androidメモリの漏洩やオーバーフローに慣れていない子供靴については、*Android性能最適化(1)--メモリのオーバーフローとメモリの漏洩の紹介*
ブログアドレス:
http://blog.csdn.net/androidstarjack/article/details/70197985
もしあなたがこの文があなたに役に立つと思ったら、QQ交流群に入ることを歓迎します:232203809微信公衆番号:端末研究開発部
BlockCannery-Android Appインタフェースカートンの元凶を簡単に見つける
BlockCanaryはAndroidプラットフォームの1つで、アプリケーションは抽象クラスを実現するだけで、このコンポーネントに必要なコンテキスト環境を提供し、普段アプリケーションを使用するときにメインスレッド上の各種カードの遅い問題を検出し、コンポーネントが提供した各種情報を通じて原因を分析し、修復することができる.
BlockCanaryにはいくつかの異なるバージョンがあり、以下のように改善されています.
まず効果図を見てみましょう.
コードはDemoFragmentを指しています.JAvaの109行目
使用方法:
//compile 'com.github.markzhai:blockcanary-android:1.5.0'
debugCompile'com.github.markzhai:blockcanary-android:1.5.0'
releaseCompile 'com.github.markzhai:blockcanary-no-op:1.5.0'
BlockCanary.install(this, new AppBlockCanaryContext()).start();
/**
* , , uid, , ,Log
*/
public class AppBlockCanaryContext extends BlockCanaryContext {
/**
* Implement in your project.
*
* @return Qualifier which can specify this installation, like version + flavor.
*/
public String provideQualifier() {
return "unknown";
}
/**
* Implement in your project.
*
* @return user id
*/
public String provideUid() {
return "uid";
}
......
}
ステップ4でdemoを実行すればいい
ここでは、関連する例を書きました.
*使用例demo接続:*https://github.com/androidstarjack/MyBlockCanaryTest
関連紹介
もし私たちがMessage/Looper/Handlerシリーズの靴をよく知っていたら、Looper.JAvaでは、
public static void prepareMainLooper() {
prepare(false);
synchronized (Looper.class) {
if (sMainLooper != null) {
throw new IllegalStateException("The main Looper has already been prepared.");
}
sMainLooper = myLooper();
}
}
/** Returns the application's main looper, which lives in the main thread of the application.
*/
public static Looper getMainLooper() {
synchronized (Looper.class) {
return sMainLooper;
}
}
すなわち、アプリケーション全体のプライマリ・スレッドは、このlooperのみで、handlerがいくらあっても最後にここに戻ります.
cpuBusy判断:
ここまで来て皆さんはよく知っていますか.原理は参考の簡書の作者がhttp://www.jianshu.com/p/cd7fc77405ac.ここで深く感謝します.
BlockCanaryパラメータの解読
BlockCanaryカートン検出プロセス
BlockCanaryは、UIスレッドの現在のスタック情報を保存するスレッドを開始し、スタック情報およびCPU情報をmThreadStackEntriesおよびmCpuInfoEntriesにそれぞれ保存し、各情報を時間撮影してkeyとして保存します.
BlockCanaryは、イベントの開始終了時間を取得するためにloggingを登録しています.イベント処理時間が閾値(デフォルト値1 s)を超えることが検出されると、mThreadStackEntriesからT 1~T 2の間のスタック情報が検索され、mCpuInfoEntriesからT 1~T 2の間のCPUおよびメモリ情報が検索される.情報をフォーマットしてローカルファイルに保存し、ユーザーに通知します.
動作原理フローチャート:
現在、アリ内の複数のAndroidプロジェクトにアクセスし、BlockCanaryを使用してAndroidアプリケーションのパフォーマンスを最適化していることが知られています.
BlockCanneryは使いやすいし、LeakCanaryを使ってメモリの漏れや解決策を検出することもできます.
また、Androidメモリの漏洩やオーバーフローに慣れていない子供靴については、*Android性能最適化(1)--メモリのオーバーフローとメモリの漏洩の紹介*
ブログアドレス:
http://blog.csdn.net/androidstarjack/article/details/70197985
もしあなたがこの文があなたに役に立つと思ったら、QQ交流群に入ることを歓迎します:232203809微信公衆番号:端末研究開発部