繁体   English   中英

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

[英]How to change the main task between two activities?

我很begineer的Android的水平..所以我需要你的人的意见..

我有两个活动

A - > MainActivity

乙 - > LoadingActivity

我的问题是

当我执行我的应用程序,首先,下开始,它需要4秒做数据库的任务。所以我认为这将是更好地使另一个活动只是为了显示加载页面..

所以在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活性屏幕后面工作) - > B被杀害(调用完成()方法) - >比,使用的应用程序。

请给我任何建议,将不胜感激。

而且,这里是我的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();
}
}

您可以使用Asynctask进行后台处理。 处理完成后,您可以开始下一个活动。您应该在异步任务上使用进度对话框:)

如果您不了解,那么您可以问我...

关于Asim

您不需要两个单独的活动,您可以执行AsyncTask线程来完成数据库的工作,然后在AsyncTask类的“ onPreExecute”方法中开始显示“所需的自定义视图”(可能包含progressBar),然后在“ doInBackground”中执行操作”方法和AsyncTask类的“ onPost”方法中的方法只是将“所需的自定义视图”的可见性设置为“消失”。 希望这行得通。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM