0

アクティビティを再起動して静的ライブラリを再ロードする必要があります。同じ静的ライブラリのいくつかの関数を呼び出したい場合、システムが失敗します。正しいシンボルが見つからず、次のエラーで失敗した後、最初の呼び出しでのみ機能します。

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000100

プロセスを強制終了してアクティビティを再度起動すると、静的ライブラリが再度読み込まれます。この瞬間から、2 番目の関数を呼び出すことができますが、ライブラリの別の 3 番目の関数を呼び出したい場合は、同じプロセスを繰り返して強制終了する必要があります。アクティビティを処理して起動します。

アクティビティ プロセスを強制終了するには、次のコマンドを使用します。

android.os.Process.killProcess(android.os.Process.myPid());

殺して起動する私の方法は機能しますが、役に立ちません。より良い解決策が必要だと思います。アクティビティのたびに静的ライブラリを削除してロードする必要があるかもしれませんが、それが可能かどうかはわかりません。少し迷っています。

4

1 に答える 1

1

すべての活動にはそれぞれ固有の があります。そのprocess idため、ライブラリを扱う一時的な活動を行うことをお勧めします。

これで、メイン アクティビティが呼び出さstartActivityForResult(temporaryact)れ、一時呼び出しの onDestroy() で呼び出されますandroid.os.Process.killProcess(android.os.Process.myPid());

次に、メインアクティビティonAcitivityResult()で一時アクティビティを再度呼び出します。

これは私にとってはうまくいきました。

于 2012-04-10T10:41:07.453 に答える