Android開発をする為にEclipseを使うわけですが、リソースファイルをいじる時にEclipseがフリーズしてしまう現象が多発していた。
リファクタリングで名前変更する時も大抵固まってたし、酷い時にはコード補完機能で固まったりしてたんだよね。
で、そろそろ耐えられなくなったので、Google先生に頼んだ所、以下のサイトが引っかかってくれました。
センスゼロからのウェブデザイン:Android開発中にEclipseがすごい勢いでフリーズする
サイト名に近親感を得られたわけですが(笑)
なるほど、今まではメモリが制限されていたわけか。
これでリファクタリング作業は早くなると思われる。
digital matter:Eclipse 3.6(Helios)でAndroid SDKのコード補完が遅い問題
で、こっちがコード補完の問題の解決。
解凍後のソースコードでかいな(笑)
これら修正をすれば、Eclipseの力が解放されるのだな、ふふり。
さて、ついにAndroid2.3が積まれているSDKが配信されたわけですが、これ入った時に色々とトラブルが起きたので一応メモ。
1.「JavaのPathが通ってない」と怒られた。
今までは特にエラーも出てなかったので気付かなかったんだけど、気持ち悪いので指示されている通りにやったんだけど直らない。
どうやら、パスにあるjava.exeの部分はいらない模様。
取ったらエラーを出さなくなりました。
2.EclipseでLogCatに「com.android.ddmuilib.logcat.LogPanel.setLogCatViewInterface(Lcom/android/ddmuilib/logcat/LogPanel$LogCatViewInterface;)V」とエラーが出たり、AVDマネージャとかが立ち上がらない。
Eclipseの入ってる所にあるeclipse.exe -clean.cmdを実行したら直った。
今の所はこれだけっぽいです。
Eclipseの部分はこれからも色々起きそうだから、覚えておくとしよう。
ウィジェットを作っていて困った事があった。
4×4のフルサイズのウィジェットで、bitmapを動的に生成してRemoteViewsのsetImageViewBitmapで入れ替えるというプログラムを作っていたのだが、ログに「!!! FAILED BINDER TRANSACTION !!!」が出て期待通りに動かない。
ググってみたら、Intent時に容量が大きいデータを転送する時に発生するようです。
実験した結果、bitmap作成時にARGB_4444で4×3のサイズが限界でした。
ALPHA_8なら問題ないけど、モノクロで何をしろと言うのだ・・・(笑)
OSのバージョンで1.6と2.1で同じ症状だったんだけど、2.2でも起こるのだろうか?
次のバージョンアップでXperiaが2.2になる事はないと思うので、実験はしてないんだけどねー。
RGB_565を使ってアルファチャンネルを使わなければメモリ節減になると思うのだが、透過が使えなくなると色々と見た目がアレなんだよね。
何か他に方法は無い物か。
各種リソースを使用する時に、自動生成されるgenフォルダにあるR.javaより「R.yyyy.xxxx」と名前を直接指定してリソースのIDを取り出す事がほとんどだが、例えば複数個あるViewに同じ処理を使用とする時にこの方法は面倒な事になる。
言語によっては、Viewをグループ化して配列にするんて方法があると思うけど、Androidにはこの機能が付いているのだろうか?
とりあえず、私が知っている方法としては以下の方法がある。
1.コードに配列を作って、予めIDを入れておく。 int[] res_id = {R.yyyy.xxxx0 , R.yyyy.xxxx1 , R.yyyy.xxxx2};
2.ViewのIDに連番を付けて、getIdentifierを使ってリソースIDを取得する。 Resources res = getResources(); //Widgetの場合はcontext.getRssources();を使う。 int res_id; for(int i = 0; i < 3; i++) { res_id = res.getIdentifier("xxxx" + i, "yyyy", getPackageName()); }
前者はViewが増えるとメモリが、後者は処理手順が増えるのかしら・・・。
他にも「R.class.getClasses()」を使うという方法もあるけど割愛しとく。
興味がある人はググるといい。
多分、大体のWindowsは同じような作業をすれば問題ないと思う。
コントロールパネル→システム→システムの詳細設定で、出てきたウィンドウのタブで詳細設定→環境変数を押す。
上と下のリストにある「TMP」と「TEMP」が一時ファイルを保管するフォルダの位置なので、ここをフルパスで変えて再起動する。
以上である、簡単ネー。