我是Android的初级......所以我需要你的建议..
我有两项活动
A - > MainActivity
B - > LoadingActivity
我的问题是,
当我执行我的应用程序时,首先,A启动并且需要4秒才能执行数据库任务..所以我认为最好只为显示加载页面而制作另一个活动..
所以在MainActivity中,我写了这段代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startActivity(new Intent(this, LoadingActivity.class)); <-- this
setContentView(R.layout.activity_main);
我的意图是,应在此MainActivity启动之前启动LoadingActivity,以便LoadingActivity在屏幕上显示加载图像4秒以覆盖MainActivity数据库任务。
所以,我的预期序列是,
B(在屏幕上显示4秒) - &gt; A(开始几乎与B相同,在B活动屏幕后面工作) - &gt; B被杀死(call finish()方法) - &gt;比,使用该应用程序。
请给予任何建议,非常感谢..而且,这是我的LoadingActivity类代码..
public class LoadingActivity extends FragmentActivity{
private static int SPLASH_TIME_OUT = 6000;
private String tag = "LoadingSplash";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.start_up);
String localUrl ="file:///android_asset/loading_gif.gif";
WebView wv=(WebView) findViewById(R.id.startup);
//wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setPluginState(PluginState.ON);
//wv.getSettings().setAllowFileAccess(true);
Log.i(tag, "WebView get Setting finish....");
wv.setPadding(0, 0, 0, 0);
wv.setInitialScale(getScale());
//wv.getSettings().setLoadWithOverviewMode(true);
//wv.getSettings().setUseWideViewPort(true);
wv.loadUrl(localUrl);
new Handler().postDelayed(new Runnable() {
/*
* Showing splash screen with a timer. This will be useful when you
* want to show case your app logo / company
*/
@Override
public void run() {
// This method will be executed once the timer is over
// Start your app main activity
Log.i(tag, "Here is Runnable Method...");
finish();
}
}, SPLASH_TIME_OUT);
@SuppressLint("NewApi")
private int getScale(){
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Point p = new Point();
display.getSize(p);
int width = p.x;
Double val = new Double(width)/new Double(800);
val = val * 100d;
return val.intValue();
}
}
答案 0 :(得分:0)
您可以使用Asynctask For Background处理。处理完成后,您可以开始下一个活动。您应该在异步任务上使用进度对话框:)
如果你不理解那么你可以问我......
此致 阿西
答案 1 :(得分:0)
您不需要两个单独的活动,您可以执行AsyncTask线程来执行您的数据库工作,并在&#34; onPreExecute&#34; AsyncTask类的方法开始显示你想要的自定义视图&#34;(可能包含progressBar)并在&#34; doInBackground&#34;方法和&#34; onPost&#34; AsyncTask类的方法只需设置&#34;所需的自定义视图&#34;对Gone的可见性。 希望这有效。