2014-10-01 100 views
0

我想在我的應用程序中獲得帶寬的價值。如何獲得帶寬

在應用程序啓動時,我會顯示一個啓動畫面,並在AsyncTask中加載數據。我用一個Handler這樣來顯示進度條:

new Handler().postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       Intent i = new Intent(Activity_Splash_Screen.this, Activity_Main.class); 
       i.putParcelableArrayListExtra("category", (ArrayList<? extends Parcelable>) ListOfCategory); 
       startActivity(i); 
       finish(); 
      } 
     }, SPLASH_TIME_OUT); 

但是,如果帶寬不是最佳的,加載數據的時間比可變SPLASH_TIME_OUT的時間更多。

因此,我想獲得帶寬的值以適應我的變量SPLASH_TIME_OUT的值。

非常感謝您的幫助!

+2

其並不好綁在處理時間這樣的行動,承擔起一個移動較慢運行的應用程序或更快的移動......你爲什麼不顯示進度'onPreExecute('的的AsyncTask的),和隱藏它然後打開下一個活動'onPostExecute()'如果結果是成功或其他... – Yazan 2014-10-01 09:51:51

+0

謝謝!它的作品 – Tom59 2014-10-02 08:10:50

回答

1

我不認爲這是顯示啓動畫面的最佳方式。啓動屏幕必須顯示,直到您的應用程序所需的所有必需數據都被加載。具有靜態超時的方法無法正常工作(或者在某些設備上根本不起作用)。你爲什麼不嘗試這樣的事情?

public class SplashActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_splash); 

     init(); 
    } 

    private void init() { 
     final AsyncTask<Void, Void, Void> asyncTask = new AsyncTask<Void, Void, Void>() { 

      @Override 
      protected Void doInBackground(Void... params) { 
       //Do your initial data loading here... 

       return null; 
      } 

      @Override 
      protected void onPostExecute(Void result) { 
       startActivity(new Intent(SplashActivity.this, MainActivity.class)); 
       finish(); 
      } 

     }; 
     asyncTask.execute(null, null); 
    } 
} 
+0

謝謝!其作品 – Tom59 2014-10-02 08:11:08