2

view.getContext() を呼び出して、ビュー インスタンスが現在レンダリングされているアクティビティのコンテキストを返すことができる場合、View ファミリー メソッドの一部が Context をパラメーターとして受け取るのはなぜですか?

これは暗黙的ではありませんか、または getContext() がこれらのメソッドのいずれかに渡された Context と異なる場合がありますか?

例を次に示します: http://developer.android.com/reference/android/widget/ViewAnimator.html#setInAnimation(android.content.Context, int)

これをクリアしてくれてありがとう

4

2 に答える 2

0

view.getContext()実際には、アプリケーションではなく、アクティビティのコンテキストを返します。これが、新しいビューを初期化するときにそのようなコンテキストを提供する必要がある理由です。

そして、これら2つのコンテキストには違いがあります。アクティビティのコンテキストは、その特定のアクティビティのライフサイクルに関連付けられています。ただし、アプリケーションのコンテキストは、アプリケーションのライフサイクルを参照しています。

詳細については、こちらをお読みください。

于 2012-10-25T13:25:14.113 に答える
0

IBinder最近、 、 、 、 などgetWindowToken()を返す API を読みgetApplicationWindowToken()ました。後者を引用:

このビューが接続されているウィンドウの最上位の「実際の」ウィンドウを識別する一意のトークンを取得します。つまり、これは getWindowToken() に似ていますが、このビューが含まれるウィンドウがパネル ウィンドウ (別のウィンドウに接続されている) である場合は、代わりにウィンドウを含むウィンドウのトークンが返されます。

おそらく、この IPC メカニズムはViewAPI と関係があります。Android の設計者は愚かでも熱心でもありません:Contextをビルドするために が必要な場合、必要なのViewは だけであることを意味しContextます。そのためView、 アプリケーション コンテキスト、サービス コンテキスト、そしてもちろん!- アクティビティ コンテキストを使用して をビルドできる必要がありますが、活動は必要ありません。はContext、リソースの取得、データベースへのアクセス、インテントの構築などを行う包括的な API です。

これはあなたの質問に対する答えではありませんが、参考になるかもしれません。私は自分で答えを探しています。あなたの質問がそれに値する注目を集めることを願っています。

于 2012-10-25T13:37:09.497 に答える