如何在两个活动之间更改主要任务?
How to change the main task between two activities?
我是 Android 的初级水平..所以我需要你们的建议..
我有两个活动
A -> MainActivity
B -> LoadingActivity
我的问题是,
当我执行我的应用程序时,首先,A 启动并且需要 4 秒来执行数据库任务。所以我认为最好再制作一个 activity 来显示加载页面..
所以在MainActivity中,我写了这段代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startActivity(new Intent(this, LoadingActivity.class)); <-- this
setContentView(R.layout.activity_main);
我的意图是,LoadingActivity 应该在这个 MainActivity 启动之前启动,以便 LoadingActivity 在屏幕上显示加载图像 4 秒以覆盖 MainActivity 数据库任务。
所以,我的预期顺序是,
B(在屏幕上显示 4 秒)-> A(开始时与 B 几乎相同,在 B activity 屏幕后面工作)-> B 被杀死(调用 finish() 方法)-> 比, 使用应用程序。
请指教,不胜感激..
而且,这是我的 LoadingActivity class 代码..
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();
}
}
您可以使用 Asynctask 进行后台处理。处理完成后,您可以开始下一步 activity.You 应该在异步任务上使用进度对话框 :)
有不明白的可以问我...
问候
阿西姆
您不需要两个单独的活动,您可以执行一个 AsyncTask 线程来完成您的数据库工作,并在 AsyncTask "onPreExecute" 方法中 class 开始显示您的 "desired custom view"(可能包含 progressBar) 并在 "doInBackground" 方法和 AsyncTask "onPost" 方法中做你的事情 class 只需将 "desired custom view" 的可见性设置为 Gone。
希望这有效。
我是 Android 的初级水平..所以我需要你们的建议..
我有两个活动
A -> MainActivity
B -> LoadingActivity
我的问题是,
当我执行我的应用程序时,首先,A 启动并且需要 4 秒来执行数据库任务。所以我认为最好再制作一个 activity 来显示加载页面..
所以在MainActivity中,我写了这段代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
startActivity(new Intent(this, LoadingActivity.class)); <-- this
setContentView(R.layout.activity_main);
我的意图是,LoadingActivity 应该在这个 MainActivity 启动之前启动,以便 LoadingActivity 在屏幕上显示加载图像 4 秒以覆盖 MainActivity 数据库任务。
所以,我的预期顺序是,
B(在屏幕上显示 4 秒)-> A(开始时与 B 几乎相同,在 B activity 屏幕后面工作)-> B 被杀死(调用 finish() 方法)-> 比, 使用应用程序。
请指教,不胜感激..
而且,这是我的 LoadingActivity class 代码..
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();
}
}
您可以使用 Asynctask 进行后台处理。处理完成后,您可以开始下一步 activity.You 应该在异步任务上使用进度对话框 :)
有不明白的可以问我...
问候 阿西姆
您不需要两个单独的活动,您可以执行一个 AsyncTask 线程来完成您的数据库工作,并在 AsyncTask "onPreExecute" 方法中 class 开始显示您的 "desired custom view"(可能包含 progressBar) 并在 "doInBackground" 方法和 AsyncTask "onPost" 方法中做你的事情 class 只需将 "desired custom view" 的可见性设置为 Gone。 希望这有效。