如何在两个活动之间更改主要任务?

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。 希望这有效。