2010-09-29 115 views
0

我在我的Android應用程序中創建了Splash屏幕(Activity)。我有一個擴展AsyncTask的內部類。此內部類的構造函數接受Context對象,該對象在Splash活動的onCreate方法中發送。還有一個常數String字段。可變範圍內部類

public class Splash extends Activity { 
private static final String TAG = "Splash"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

    new SplashAsyncTask(this).execute(new Void[] {}); 
} 
private class SplashAsyncTask extends AsyncTask<Void, Void, Void> { 
    private Context context; 
    public SplashAsyncTask(Context context) { 
     this.context = context; 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      Thread.sleep(1500); 
     } 
     catch(InterruptedException e) { 
      if(Constants.LOGGING) 
       Log.e(TAG, e.toString()); 
     } 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
    } 
} 
} 

我應該爲private static final String TAG = "Splash";變量使用什麼範圍?所有範圍似乎都很好,但什麼是合適/更有效?我注意到eclipse會自動創建public範圍聲明的變量

另外,我真的需要發送Context對象到SplashAsyncTask的構造函數嗎?或者我可以/我應該只在所有需要Context參考的情況下使用Splash.this

+0

有沒有必要發送上下文關聯到SplashAsynTask。內部類只是外部類的成員,他們可以訪問外部類的任何成員變量。 – 2010-09-29 15:45:58

+0

我認爲根本不需要啓動屏幕,我討厭看到那些讓我等待的屏幕^^所以想想看它是否有意義 – 2010-09-29 15:58:15

+0

好吧然後把它看作是另一個活動(不是飛濺)與AsyncTask – binnyb 2010-09-29 15:59:16

回答

1

私人和公共只說明如何您可以訪問您的變量,它更是一個安全的事情,最好一類的所有變量應該是私有的,你應該通過一個getter和setter方法訪問它們。

我認爲靜態這個詞在這裏更重要,因爲創建一個變量是一件大事,這意味着變量可以被訪問而不用創建一個實例,並且所有共享這個變量我的意思是如果你願意的話變量:

public static final String TAG = "Splash"; 

,那麼你可以通過編寫訪問:

Splash.TAG 

未做它的一個實例,但由於其私人你不容,但它仍然是與所有的共享變量你的班級濺水

希望這可以幫助