2014-10-01 61 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