2014年8月26日火曜日

メモリリークの解析ツール ダウンロード・インストール方法

■ メモリの調査 ツールの導入 MAT memory analyzer tool


OutOfMemmoryErrorがたまにでるので、どのくらいメモリを食べているのか調査するために便利そうなツールを探しているとこんなものを発見φ(・ω・)カキカキ
導入方法をメモします。

● ダウンロード ----------------------------------------------

   Memory Analyzer 
   メモリの使用状況がわかるもの
   Eclipseで使うMemory Analyzerのインストール ↓
   http://xiangcai.at.webry.info/201009/article_7.html

● ecripseにインストールする --------------------------------

Help > Install New Software Avaliable software sites(使用可能なソフトウェアサイト一覧)  
   追加しインストールする
   > http://download.eclipse.org/birt/update-site/4.3/
     BIRT 4.3 Engine OSGi Runtime SDK のみ選択する

   > http://download.eclipse.org/mat/1.4/update-site/
     すべてインストールする


● 使用方法 --------------------------------------------------

アプリを起動

   Window → Open Persepective → DDMS または、右上のDDMSボタンを押下

   ヒープファイルを作成する
  DDMS → Dump HPROF file クリック(左上にだいたいある)

 ↓
   Leak Suspects Reportを選択し完了
    ↓
  Leak Suspectsタブの左上のグラフ(三本線)を押下すると詳細がみれます


 場所は以下のとおりです。↓
  















以上ですく(・ω・)


 



2014年8月22日金曜日

現在のスレッドがUI(メイン)かチェックする



現在のスレッドがメインか、その他のワーカスレッドがどっちかわからなくなった時用に…
メモしますφ(。_。)カキカキ


こいつで現在のスレッドを取得して↓

Thread.currentThread();

メインのスレッドと比較する↓

getMainLooper().getThread();

if( Thread.currentThread.equals( getMainLooper().getThread() ) ){
     //メインきた!
}

以上です(。ω。)


 参考サイト
http://blog.livedoor.jp/sylc/archives/1564156.html

2014年8月21日木曜日

setEmptyViewを使用する際の注意点(設定しても何も起こらない件)



メインレイアウトの中にListViewを配置して、setEmptyViewが反応しない…ということがあったのでメモしますφ(・ω・`)カリカリ

■ xml側の記述

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    style="@style/MainLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >


   <TextView
          android:layout_width="match_parent"
           android:layout_height="wrap_content"
          android:text="@string/employee_name" />

   <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />



</LinearLayout>




■ ソース側の記述
ListView list = view.findViewById(R.id.list);

/* その他もろもろの設定処理 省略します */

//んで最後にadapterが空になった時に表示するViewを設定すると…

LinearLayout.LayoutParams params = new LinerLayout.LayoutParams( ViewGroup.LayoutParams.MATH_PARENT, ViewGroup.LayoutParams.MATH_PARENT );
TextView text = new TextView( getActivity() );
text.setText( "ないよ~~~~" );
text.setLayoutParams(params);

list.setEmptyView( text );


設定すると…でてくるはず!!…って あれ…何もおこらない(・ω・?) ん?なぜ?
先輩に送ってくれたサイトをちらちら…
http://qiita.com/ryugoo/items/b8b735e3c441c65bdaa8
このサイトでヒントをいただきましたm(。_。)m
アリガトウゴザイマス。
…んで修正修正とφ(。_。)カタカタ

■ xml側の記述

とりあえずListViewの親にFrameLayoutを設置していれこにします。
 <TextView
          android:layout_width="match_parent"
           android:layout_height="wrap_content"
          android:text="@string/employee_name" />

  <FrameLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp"
        android:layout_weight="3" >

        <ListView
            android:id="@+id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </FrameLayout>


■ ソース側の記述
LinearLayout.LayoutParams params = new LinerLayout.LayoutParams( ViewGroup.LayoutParams.MATH_PARENT, ViewGroup.LayoutParams.MATH_PARENT );
TextView text = new TextView( getActivity() );
text.setText( "ないよ~~~~" );
text.setLayoutParams(params);

list.setEmptyView( text );


//親ビューにemptyViewを追加します。
 ((ViewGroup)list.getParent()).addView( text );//←ここにこれを追加するだけ!!


やったやった!!きたきた!!(@^ω^)
後、記述の注意点としてsetEmptyViewを呼び出し後にかならず親ビューへセットしてください。
 じゃなきゃエラーでます。(・ω・;)でちゃいますよ。
 んと、毎回毎回TextViewを作成するために記述するのがめんどくさかったのでListViewを継承カスタムViewを作成してその中で作るように変えました。
(・_・)もっといい方法ないかなぁ。 以上です。m(._.)m

2014年8月18日月曜日

TextWatcherインターフェースを使用して、リアルタイムにEditTextの内容を取得する


今回EditTextに入力されたものを、リアルタイムにチェックを行う必要があったので

onKeyListener,OnEditorActionListenerは使用せず、一定の間隔で処理を実行しようと考えているところこんなインターフェース「TextWatcher」を発見(・ω・!!!)


使用しているActivityまたは、Fragmentにimplementsして…[ import android.text.TextWatcher; ]
abstract指定されてる関数を実装します(・ω・)フムフム


//操作後のEtidTextの状態を取得する
public abstract void afterTextChanged (Editable s) 

//操作前のEtidTextの状態を取得する public abstract void beforeTextChanged (CharSequence s, int start, int count, int after)

 //操作中のEtidTextの状態を取得する
public abstract void onTextChanged (CharSequence s, int start, int before, int count) 


EditTextにリスナーをセットして終わり。(・0・)オーーーー
view.addTextChangedListener(this);


以上です(・ω・)



参考サイト
http://gupuru.hatenablog.jp/entry/2014/04/07/202334 http://developer.android.com/reference/android/text/TextWatcher.html

2014年8月1日金曜日

PHPによるセールスフォースAPI連携3(データローダによるCSV登録)

API連携から少し離れますがデータを一括登録したい場合は、SalesForceのデータインポートウィザードまたは、データローダを使い、CSVファイルにて一括登録が行えます。


データインポートウィザード  SalesForceメニューから利用  インポート上限:5万件 
データローダ  PCにインストール  インポート上限:500万件 





1. データインポートウィザードによる 一括登録

1.1. 「データの管理」 → 「データインポートウィザード」から、「ウィザードを起動する」をクリックします。


1.2. CSVファイルを準備します。
  
"OWNERID","名前"
"00510000003CfSkAAK","あいうえお0001"
"00510000003CfSkAAK","あいうえお0002"
"00510000003CfSkAAK","あいうえお0003"

1.3. オブジェクト名、CSVファイル、文字コードを選択します。


1.4. 対応付けの確認画面が表示されます。


1.5. 確認画面が表示されます。

1.6. インポートの完了メッセージが表示されます。




1.7. データが追加されます。














2. データローダによる一括登録

2.1.  「データの管理」 → 「データローダ」をクリックし、「データローダの設定」ページからデータローダをダウンロードをします。




2.2. ダウンロードした ApexDataLoader.exe を実行し、インストールを行います。





2.3. インストール完了です。




2.4. テスト用のCSVファイルを準備します。

test.csv
  
"NAME"
"かきくけこ"
"さしすせそ"
"たちつてと"

2.5.データローダを起動します。



2.6. 「Insert」をクリックします。

2.7. ログイン画面が開きます。

Username : SalesForceログイン時のユーザ名を入力します。
Password :  SalesForceログイン時のパスワード+セキュリティトークンを入力します。




2.8. ログインに成功すると、「Next」ボタンがクリックできるようになるのでクリックします。

2.9.  データを登録するオブジェクトを選択し、CSVファイル(test.csv)を選択し、「Next」をクリックします。

2.10. レコード追加の確認メッセージが表示されるので「OK」をクリックします。

2.11. マッピングの確認画面が表示されるので、「Create or Edit a Map」をクリックします。


2.12. マッピングの設定画面が表示されるので、「Auto-Match Fields to Columns」をクリックします。
画面下に、オブジェクトのNameとCSVファイルのNameのマッピングが設定されたら、「OK」をクリックします。


2.13. マッピングの確認画面に戻り、「Next」をクリックします。

2.14. 実行結果を保存するディレクトリの選択画面が表示されるので、 ディレクトリを指定して「Finish」をクリックします。


2.15.インサートの確認メッセージが表示されるので、「はい」をクリックします。


2.16.  実行結果のメッセージが表示されます。

「View Successes」 : 成功したデータの内容が表示さます。
「View Errors」 : エラー時のメッセージが表示されます。


2.17. データが登録されたことを確認します。















オブジェクトの登録データを一括削除したい場合

3.1.  「設定」 → 「ビルド」 → 「カスタマイズ」 → 「ユーザインタフェース」から、「カスタムオブジェクトの切捨てを有効化」をONにします。



1.2. 「設定」 → 「スキーマビルダー」からオブジェクトを選択し、「オブジェクトを参照する」をクリックする。

































1.3. オブジェクトの画面で「切り捨て」をクリックします。
(「カスタムオブジェクトの切捨てを有効化」がON の場合、「切り捨て」ボタンが出現します)





















1.4.  カスタムオブジェクトの切り捨て画面で、オブジェクトを指定して「切り捨て」をクリックすると、データが一括削除されます。