最初に静的ブロックと Oncreate メソッドのどちらが実行されるか知りたい
public class MainActivity extends Activity {
static{
// dosomething
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
最初に静的ブロックと Oncreate メソッドのどちらが実行されるか知りたい
public class MainActivity extends Activity {
static{
// dosomething
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
あなたの質問に答えるには、静的ブロック、次に onCreate メソッドです。
クラスはこのようにロードされます
次に、インスタンス メソッドを呼び出すことができます。
パブリック クラスの例 {
public static int FIRST = 1;
static {
// second
}
public int third = 3;
{
// forth
}
public Examle(){
// fifth
}
public void sixth(){
}
}
http://javarevisited.blogspot.com/2012/07/when-class-loading-initialization-java-example.html
ブロックを実行する次の方法....
1 := 静的宣言。
2 := 非静的宣言。
3 := コンストラクターの実行。
4 := メソッドの実行。
静的ブロックが最初に実行されます。
オブジェクトをインスタンス化せずに静的フィールドのみにアクセスした場合でも、静的ブロックが実行されます。このシナリオでは、静的フィールドのみがアクセスされる場合、コンストラクターまたはクラス メソッド (onCreate) はまだ実行されません。
Class オブジェクトが作成されると、すべての静的コードが実行されます。この(クラス)オブジェクトは、静的変数(クラス変数)をメモリ上に物理的に保持します。静的ブロックは Class オブジェクトの初期化に使用できます。その後、すべてのクラス インスタンスが Class オブジェクトの静的変数にアクセスします。
コンストラクターは、オブジェクトがインスタンス化される前に呼び出されるため、内部的には静的メソッドでもあります。
さらに学習したい場合は、このリンクで詳細を確認できます: http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
静的ブロック。
Android プログラムは主に Java プログラムであることを思い出してください。静的ブロックは、クラスのロード時に事前初期化に使用されるためonCreate
、Android で前に呼び出されます。
詳細については、http: //docs.oracle.com/javase/tutorial/java/javaOO/initial.htmlを参照してください。
最初に static が呼び出され、次に onCreate が呼び出されます