显示正在加载活动直到主要活动已满加载

问题描述:

以下是在onCreate方法完全执行后要加载的主要活动的代码。
Refered This for closing one activity from another显示正在加载活动直到主要活动已满加载

public class DictionarySscWords extends AppCompatActivity implements View.OnClickListener, TextToSpeech.OnInitListener 
{ 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    context = this; 
    Intent myIntent = new Intent(DictionarySscWords.this,LoadingIt.class); 
    startActivity(myIntent); 
    setContentView(R.layout.activity_main); 
    //all this activity work 
    LoadingIt.fa.finish(); //close Loading activity 
} 
} 

现在,这里是我的loadingIt活动的代码

public class LoadingIt extends AppCompatActivity { 
Context context; 
public static LoadingIt fa; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_loading_it); 
    context=this; 
    fa = this; 
    ProgressDialog dialog=new ProgressDialog(context); 
    dialog.setMessage("Loading Please wait!!"); 
    dialog.setCancelable(false); 
    dialog.setInverseBackgroundForced(false); 
    dialog.show(); 
} 
} 

问题是LoadingIt活动永远不会结束,并且应用程序被套牢加载屏幕上我要完成thisactivity作为以前的活力onCreate方法全面执行
谢谢

+1

你有重写了'onFinish()'的'LoadingIt'活动? – hsm59

+0

此外 - 您正在持有对活动的静态引用。这永远不会消失,除非你从某个地方手动清除 - >你正在创建一个内存泄漏! - 从你添加的链接。 – hsm59

+0

您能告诉我们您在DictionarySscWords活动中执行的任务吗? –

我觉得你的解决方案并不是最佳实践。以下是我会做:

  1. 声明LoadingIt活性作为启动活动

  2. onCreate方法,在后台加载所需要的资源(或者与一个AsyncTask或者例如IntentService

  3. 一旦装载完成,完成LoadingIt活性并显示DictionarySscWords活性

如果您发布加载逻辑,我可以提供一个示例实现。

+0

DictionarySscWords不是启动器类 – phpdroid

+0

“启动器类”是什么意思,“DictionarySscWords”是一个活动,对不对?因此,您可以在加载完成后使用意向来启动它,并传递加载的数据。 –

您可以在LoadingIt类的onCreate()使用线程

public class LoadingIt extends AppCompatActivity { 

    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     getSupportActionBar().hide(); 
     setContentView(R.layout.activity_loading_it); 

     Thread loadingThread = new Thread() { 

     @Override 
     public void run() { 
      try { 
       super.run(); 
       sleep(2000); 
      } catch (Exception e) { 

      } finally { 

       Intent main = new Intent(LoadingIt.this,MainActivity.class); 
       startActivity(main); 
       finish(); 
      } 
     } 
    }; 
    loadingThread.start(); 
}