問題タブ [android-runtime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
976 参照

android - アプリケーションは oat ではなく odex でコンパイルされます

Google が ART ランタイム (AOT) について言及したように、アプリケーションは oat 形式でコンパイルされ、ネイティブ コードで完全にコンパイルされます。

チェック済みの Nexus 6P デバイスとシステム アプリケーションには oat フォルダーがありますが、内部に odex ファイルが存在します。boot.oat に似た対応する oat ファイルを期待していました。私が知る限り、odex は dexopt ツールを使用して dalvik の時代から使用された最適化された dex です。

ART はインストール時に dex2oat を使用する必要があり、なぜ odex ファイルが保存されるのか。

誰かがこの動作について説明してもらえますか?

ありがとう、ビナイ

0 投票する
2 に答える
2135 参照

java - Android ランタイム (ART) で言語レベルのアサーションを有効にするにはどうすればよいですか?

私が開発しているPixel-Cがあります。私の最小 API レベルは 21 です。これは、ART が Dalvik を置き換えたレベルでもあります。私は両方を試しました:

そして、それらは正常に実行されているようです。私は置いた

私の onStart で、logcat にスタック トレースが表示されません。インストールして実行するとすぐにアプリが終了すると思います。このアサーションを実行する方法を教えてください。

JUnit やアサーションを行うその他の方法、またはエラーを明示的にスローする必要があるソリューションについては言及しないでください。製品コードはエラーをスローしたり、エラーをキャッチして処理しようとしたりしてはなりません。そのため、アサーションが言語に追加され、テスト環境で不変式に違反した場合にアプリをクラッシュさせる方法があり、本番環境でオーバーヘッドやリスクをまったく発生させません。

この 6 年前の質問は基本的に同じですが、Dalvik (IE が古い) の場合、解決策は機能しないか、良くありません: Android デバイスで assert を使用できますか?

0 投票する
2 に答える
1473 参照

android - Android マシュマロのアクセス許可?

ユーザーがそのアクセス許可のアクセスを受け入れることができる場所に許可プロンプトを表示したいのと同じように、ユーザーの連絡先にアクセスしたいので、例とソースコードを許可および拒否する2つのオプションでプロンプトを表示したい.

0 投票する
2 に答える
7586 参照

java - JVM は Dalvik や ART とどのように違いますか?

まず、この質問に不適切なタイトルを付けた可能性があると思いますが、適切な言葉が思い浮かびませんでしたので、お気軽に編集を提案してください。質問がより教育的で他の人に関連するものになるようにします.

javax.Swing を Android プロジェクトに使用できないことはわかっています。これを受け入れ、Android XML ベースの UI デザインを学びましたが、好奇心から、その理由を正確に知りたいと思っています。

電話の画面サイズは Swing ではうまく処理できない可能性があることは理解していますが、開発者が単に javax.Swing パッケージをインポートするのを止めるにはどうすればよいでしょうか (Android Studio がそもそもそれを起こさせないことに加えて)。変形した見苦しい Swing ウィンドウが Android デバイスの画面に表示される可能性はありますか? また、AWT と SWT もインポートする必要があることも認識していますが、同じ質問がこれらのパッケージにも当てはまります。

私がこれを理解していないのは、Java 仮想マシンと Android の同等物がどのように使用されているかを理解していないことが原因かもしれません (Dalvik はまだ使用されているのでしょうか、それとも冷ややかな七面鳥を ART に切り替えたのでしょうか?)。

いつものように、あなたが提供できる主題に関する情報や読み物は大歓迎です. JVM、Dalvik、および ART がどのように機能するかの基礎についてもっと学びたいと思っています。

0 投票する
1 に答える
5426 参照

java - Android FinalizerDaemon がハングする

Android アプリで非常に奇妙な問題が発生しています。特定の時点 (メイン アクティビティが開始され、フラグメントが表示される前後) の後、FinalizerDaemon はオブジェクトの処理を停止し、ゴミが山積みされ続けます。スレッド ダンプを見ると、スタックしているようですReferenceQueue.remove():

それでもキューは空ではありません。アプリをしばらく使用した後にヒープをダンプすると、キューは文字通り何千ものエントリになります。データ構造も壊れているようには見えません。 空でない ReferenceQueue を示す FinalizerDaemon インスタンス

割り当てとガベージ コレクションを行った後に再度ダンプすると、キューの先頭が以前と同じ Matrix インスタンスであることがわかります。

これは、ある時点でリリースする必要があるいくつかの C++ オブジェクトを保持しているためです。ファイナライザーが JNI 関数を呼び出して C++ 側で愚かなことをすると、何らかの形でそれが壊れる可能性があると思いますが、すべてのログは、すべてのファイナライザーが正常に実行され、ランダムに呼び出されなくなるまで何もスローせずに戻ることを示しています。また、ウォッチドッグは実行時間が長すぎて例外をスローするファイナライザーを処理することになっているため、ファイナライズ呼び出しでデーモンを壊すことは実際には不可能です。

明示的に試してみましたSystem.runFinalization()が、実行されないデーモンを待って、メインスレッドを永久にハングアップさせるだけです。

これがどのように起こるか考えていますか?

0 投票する
2 に答える
8696 参照

android - Android - すべてのスレッドの一時停止にかかった時間: * ms

アプリケーションを離れてからしばらく経っても、logcat にこれらの警告が表示されます。(ただし、キルはしませんでした。押し戻してそのままにしました。)

それらの数字は深刻でたくさんあります。

この問題に関するいくつかの質問を見ましたが、どれも私のものと似ていませんでした.「OOMまたはフリーズの問題がない限り無視してください」ということを受け入れることはできません.それ。

これの原因と、これを防ぐ方法を知る必要があります。

Retrofit を使用して Web サービスのリクエストを完了させています。そして、リクエストが完了するのを待っている間にキャッシュからデータを取得/更新/削除する ThreadPoolExecutor 。ただし、これらのいずれかがこれを引き起こしているとは思いません。

この「すべてのスレッドを中断しています」という警告に固有のものは何も見つからないため、この状況に関するアイデアや一般的な情報をいただければ幸いです。

0 投票する
2 に答える
5893 参照

android - アート: X の検証に Y ミリ秒かかりました

logcat に次の警告があります。

コードは次のとおりです。

220 ミリ秒はかなり長いです (そして、そのフラグメントの起動の遅れに気付いているように感じます)。

私は RxJava と retrolambda を使用していますが、このメッセージがポップアップする場所はこれだけではないので、直接関係はないと思います。

検証時間にどのように影響を与えることができますか? それはそれだけの価値がありますか?

いくつかのドライコードを使用してSnackbar.make呼び出しを削除することでワーリングを取り除くことができるため、循環的複雑さと関係があるようです。if