2017-06-16 17 views

答えて

11

を取得していないが、それは完全に初期化されません。アクティビティには、正しく初期化するために正しい順序で呼び出される必要がある一連の関数と、アクティビティを表示するためにフレームワークが実行する一連の手順があります。 startActivityを呼び出すと、それらのステップが実行され、アクティビティライフサイクル関数が正しい順序で呼び出されます。したがって、新しいものを使用する理由はありません。

これを別の方法で見ると、あなたはアクティビティa = new Activity()を実行するとします。 OSはあなたがそれをしたことをどのように知っていて、そのアクティビティを表示するはずですか?アクティビティが現在フォアグラウンドに入るはずであることは、どのようにわかりますか?そうではありません。新しいアクティビティが開始されたことを伝える必要があります。そのため、startAcctivityが存在します。とにかくそれを呼び出さなければならないので、それをファクトリメソッドにするだけではないので、初期化と起動は1つのステップですか?

+0

これは、活動の良い仕事の有益な情報を呼び出すときに何が起こっているかについての素敵な説明です。 –

1

キーワードnewを使用してアクティビティオブジェクトを作成できるだけでなく、レイアウト/サブビューを拡張して起動することもできます。

しかし、上記の実装方法は非常に面倒でエラーが発生しやすいです。通常のAndroidアプリの開発を扱っている場合はお勧めできません。

https://github.com/singwhatiwanna/dynamic-load-apk

https://github.com/didi/VirtualAPK

https://github.com/DroidPluginTeam/DroidPlugin

これらのプロジェクトをロードし、外部活動を起動することを目指して:あなたは、それがどのように行われるかに興味があるこれらのgithubのプロジェクトを見ている場合は

/アンインストールされたapkファイルのサービス。彼らが実装する方法の1つの小さな側面は、newでアクティビティを作成することです。

関連する問題