Android LeakCanaryメモリ検出Eclipesバージョン
8473 ワード
私たちがよく使うAndroid端末のメモリ検出ツールLeakCanaryは、gitの上の公式サイトのバージョンはAndroid studioのバージョンですが、上の方にもいくつかの上級者がeclipseのバージョンを作っています。ここはeclipseバージョンのダウンロードアドレスです。
ダウンロード
これはAndroid sdk 19のバージョンです。4.4.2です。
必要なADTバージョンは230.0より高くなります。
Android SDK Managerで更新できます。
ここは国内のSDKバージョンの鏡像をあげます。
Server:mirrors.neusoff.edu.cn
ポート:80
LeakCanaryのlibrary導入が成功したら、まず自分のアプリクラスを作ります。
配置変更時のAndroid Manifest
Java
アプリのname属性を修正すればOKです。
テストメモリから漏れたコード:
MainActivity:
ダウンロード
これはAndroid sdk 19のバージョンです。4.4.2です。
必要なADTバージョンは230.0より高くなります。
Android SDK Managerで更新できます。
ここは国内のSDKバージョンの鏡像をあげます。
Server:mirrors.neusoff.edu.cn
ポート:80
LeakCanaryのlibrary導入が成功したら、まず自分のアプリクラスを作ります。
配置変更時のAndroid Manifest
Java
package com.example.leakcanarydemo;
import com.squareup.leakcanary.LeakCanary;
import android.app.Application;
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
Android Manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.leakcanarydemo"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:name="com.example.leakcanarydemo.MyApp"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<service
android:name="com.squareup.leakcanary.internal.HeapAnalyzerService"
android:enabled="false"
android:process=":leakcanary" />
<service
android:name="com.squareup.leakcanary.DisplayLeakService"
android:enabled="false" />
<activity
android:name="com.squareup.leakcanary.internal.DisplayLeakActivity"
android:enabled="false"
android:icon="@drawable/__leak_canary_icon"
android:label="@string/__leak_canary_display_activity_label"
android:taskAffinity="com.squareup.leakcanary"
android:theme="@style/__LeakCanary.Base" />
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
intent-filter>
activity>
application>
manifest>
LeakCanaryはServiceとActivityを2つ追加する必要があります。アプリのname属性を修正すればOKです。
テストメモリから漏れたコード:
MainActivity:
package com.example.leakcanarydemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
start();
}
});
}
private void start() {
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(20000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
}
, LeakCanary 。