2016-09-16 7 views
0

私のアプリはInputMethodServiceに基づいており、カスタムキーボードアプリです。サービス内のこのアプリでは、さまざまなタブ、画像、GIF、Google広告、ニュースなどをサーバーから表示しています。 私のアプリは高RAMを消費しています。このアプリは、私はすでに、使用後のArrayListをすべてのリストをクリアしています ...デバイスが遅くなっている..サービスベースのアプリがAndroidで高いRAMを消費

私はそれがなく、役立ちます。この

<service 
      android:name="services.Myservice" 
      android:description="@string/app_name" 
      android:permission="android.permission.BIND_INPUT_METHOD" 
      android:process=":myprocess"> 

      <intent-filter> 
       <action android:name="android.view.InputMethod" /> 
      </intent-filter> 

      <meta-data 
       android:name="android.view.im" 
       android:resource="@xml/method" /> 
     </service> 

のような別のプロセスで私のサービスを入れてみました私は広告をクリックすることができませんでした。広告をクリックしても何も起こっていませんでした。それもテーマを更新することができませんでした。..

私のアプリは遅すぎますそれは大部分の時間170-200 MBの巨大なRAMを取っています。 私は広告や通知を表示するためにgoogle playサービスを使用しました..それはまた、高いRAM消費の理由です。

しかし、これらの機能を持つ多くのアプリがあります。ここで

はMATからのレポートです:

enter image description here

この上で私を助けてください! お待ちしております!

+0

一般的なガイドライン以外の具体的な内容はありません。これを読んで、[Investigate Ram](https://developer.android.com/studio/profile/investigate-ram.html) –

答えて

0

メモリ消費量を削減できる方法はいくつかあります。

  1. 不要なコードを難読化するためにプロガードを使用します。 Link
  2. また、リントクリーナーを使用することもできます。文字列、色、寸法など、Androidのlintで報告されている未使用のリソースが削除されます。 Link
  3. 使用していない外部ライブラリをgradleから削除します。
  4. サービスコールを控えめに使用します。新しいデータが必要なときには、可能であればデータを更新するオプションをユーザに与えることができます。
  5. 未使用のxmlリソースとJavaリソースを使用していないときに解放するか、onDestroy()が呼び出されたときに解放します。 Link1Link2
  6. データベースを照会した後にカーソルを閉じることを忘れないでください。カーソルを長期間開いたままにしたい場合は、注意深く使用し、データベースタスクが終了するとすぐにカーソルを閉じる必要があります。 また、registerReceiver()を呼び出した後でunregisterReceiver()を呼び出すことを忘れないでください。 Link
+0

既にプロガードを使用しています... –

+0

サービスを継続的に実行する代わりに、新しいデータが利用できるときはいつでも。 –

関連する問題