2

見る

私はmainActivityどの呼び出しを持っていますtempActivity

tempActivity内で、ネイティブメソッドを呼び出し、データをmallocします。

1>tempActivityからmainActivityに戻るまたは

2>アプリケーション全体を終了します

ネイティブメソッドですべてのデータmallocを解放する1つのクリーンアップ関数を呼び出す必要があるので、そのようなものをどのように実装できますか?

Androidフレームワークにはそのようなクリーンアップ機能を処理する方法がありますか?

4

4 に答える 4

3

さて、質問は、malloc()ネイティブコード内を使用して割り当てられているメモリを解放する方法についてだと思います。

私のプロジェクトの1つでも同じ要件がありました。私は次のようにそれをしました。

onStop()またはの内部で、割り当てられたメモリonDestroy()に使用したネイティブ呼び出しを実行しました。free()これは、それを行うための最良かつ最も簡単な方法だと思います。androidがこのためのAPIを提供しているかどうかはわかりません。このようなものが存在するかどうかを知ることは有益でしょう。ありがとう。

于 2012-04-24T05:50:17.963 に答える
1

ここから取った図を参照してください。

ここに画像の説明を入力してください

基本的に、Activityクラスはあなたに役立つことができるいくつかのメソッドを定義しています:

  • onPauseこれは、アクティビティが一時停止されるたびに呼び出されます。つまり、画面がロックされ、他のアクティビティに移動します
  • onDestroyonStop他のアクティビティに行くときに呼び出されます。

たぶん、これらの方法のいくつかはあなたのために役立つでしょう。

于 2012-04-24T05:41:48.890 に答える
1
  1. tempActivityからへの遷移については、のメソッドmainActivityでクリーンアップ関数を呼び出します。tempActivityonDestroy
  2. アプリケーション全体が終了する場合:それははるかに厄介です。アプリがいつ終了するかを通知するグローバル関数はないため、アプリケーションが終了していることを追跡する他の手段を使用する必要があります。

Service使用するonStartCommand関数を設定してaを使用してから、呼び出しのメソッドでクリーンアップ関数START_NOT_STICKYonDestroy使用することをお勧めします。Serviceこれを行い、すべてActivityの人にサービスを使用させる場合は、そこですべてを行うことができます。

于 2012-04-24T05:42:10.623 に答える
0

推奨される手法は、に必要なものをすべて割り当て、onResumeでクリーンアップすることonPauseです。このようにして、アクティビティが表示されようとしているときに割り当て、アクティビティが他のアクティビティによって部分的または完全に隠されたときにクリーンアップします。

于 2012-04-24T05:40:33.243 に答える