切换活动时如何删除黑屏(不工作) - 在android上

时间:2011-11-25 14:48:48

标签: android android-asynctask android-activity

在我的应用中,我将一个活动切换到另一个活动(Main.java到Feature_Screen.java)。在Feature_Screen(第二个活动)中,我将下载大量数据和图像以在网格视图中设置。所以我使用Async Task下载它。虽然我在第二个活动中使用异步任务,但在将Main.java切换到Feature.java时会出现黑屏。我在谷歌搜索,但所有答案都说使用异步任务。

示例编码:

public class Main extends TabActivity{

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tabbar);
    .................
    intent = new Intent().setClass(this, Featured_Screen1.class);
    spec = tabHost.newTabSpec("home").setIndicator("",
            res.getDrawable(R.drawable.top_book_icon)).setContent(intent);
    tabHost.addTab(spec);
    ...........
}
}

在Feature_Screen1.java(Second.java)中:

public class Feature_Screen1 extends Activity{

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.feature);
    .................
      new Content_load().execute();
    ...........
}

 class Content_load extends AsyncTask<Void, Void, Void> 
   {
ProgressDialog dialog = new ProgressDialog(SignInPage.this);

protected void onPreExecute() { 
    dialog.setMessage("Please wait...");
    dialog.setCancelable(false);
    dialog.show();
}

protected void onPostExecute(Void unused) {
    dialog.dismiss();
}

protected Void doInBackground(Void... arg0) {
      ..........
  return null;
   }
  } 

}

我的问题是如何在活动之间切换时避免黑屏?请帮帮我。

1 个答案:

答案 0 :(得分:0)

最后我找到了黑屏问题的答案..

如下所示使用AsyncTask,如果您遇到任何问题请告诉我,这对我有用

public class SyncroniseRecords extends AsyncTask<Void, Void, Void>
{  
    @Override
    protected void onPreExecute()
    {  
        super.onPreExecute();
        dialog.setMessage("Please wait...");
        dialog.setCancelable(false);
        dialog.show();

    } 
    @Override 
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
        // Things to be done while execution of long running operation is in progress. For example updating ProgessDialog
     }

    @Override 
    protected void onPostExecute(Void result)
    { 
           dialog.cancel();
    }
    @Override
    protected Void doInBackground(Void... params) {

        return null;
    }
} 

这将启动没有任何黑屏的活动。使用onPreExecute,您可以显示进度条。一旦完成该过程,您可以在OnPostExecute()中取消它。