プロジェクトでいくつかの主要なメモリの問題が発生しています。あなたが私にアドバイスを投げてくれたら、それは本当に役に立ちます..私は私の全体の使用法を説明しようとします.
メイン アクティビティでは、最初に AdMob バナーを設定します。大量のメモリを使用しているようです。これは私の onCreate メソッド全体です:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
mGameView = new GameView(this, getAssets());
ActivityManager am = ((ActivityManager)getSystemService(Activity.ACTIVITY_SERVICE));
mGameView.setMemoryLimit(am.getMemoryClass());
mLayout = new RelativeLayout(this);
mLayout.addView(mGameView);
if(mGameView.getMemoryLimit() > 40 && !mGameView.isFullVersion())
{
mAdView = new AdView(mThis, AdSize.BANNER, "xxxx");
mAdRequest = new AdRequest();
mAdView.loadAd(mAdRequest);
mAdRequest = null;
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
lp.addRule(RelativeLayout.CENTER_HORIZONTAL);
mAdView.setLayoutParams(lp);
mLayout.addView(mAdView);
}
setContentView(mLayout);
hideBannerAd();
}
私がよくグーグルで調べたように、AdMob コードはメモリ リークを起こしているように見えるので、アプリの存続期間中ずっとそれを維持し、読み込み中の画面にのみ表示するようにしています。
この時点で、私はおそらく 10 ~ 15 MB のメモリを ADS 用に使用しています。
メニューとゲームプレイで使用されるすべてのビットマップをグループ化しました。つまり、メニューを表示するときにのみメニュー ビットマップをロードし、新しいビットマップをロードする前に古いビットマップの参照をリサイクルして削除します。
読み込みプロセス中に、メモリの残りの割合を確認し、割合が 90% 未満の場合にのみビットマップの読み込みを続行します。
次の方法でメモリの割合を計算します。
Debug.getMemoryInfo(memoryInfo);
percent = (float) (memoryInfo.getTotalPss() / 1024.0) / (float) mGameView.getMemoryLimit() * 100;
tge memoryLimit は、前述のアクティビティに由来します。
ActivityManager am = ((ActivityManager)getSystemService(Activity.ACTIVITY_SERVICE));
mGameView.setMemoryLimit(am.getMemoryClass());
アクティビティで見たように、40 MB を超えるメモリを搭載したデバイスの広告のみを表示しています。しかし、私はADSなしのプロジェクトに約20MBを使用しています。
私が遭遇したもう 1 つの問題は、他のアプリケーションとメモリを共有するデバイスに関するものです。彼らのメモリ制限が64であるが、私のアプリ以外の場所からまだ40-50のように使用している場合のように。どういうわけかそのメモリをクリアするように要求できますか?
これは本当に私の神経質になっているので、私は何か間違ったことをしていますか. 同時に 2 ~ 5 個の広告を使用しているアプリを見たことがあります。
どうにかしてこれをうまく管理できますか?