android - 应用程序显示黑屏?

标签 android android-asynctask

我正在实现一个 android 应用程序。我在一项 Activity 中使用网络服务。我正在显示一个进度对话框,直到它加载第二个 Activity。但它不会一直显示并显示一段时间黑屏。看起来应用程序挂起。我应该怎么办?我浪费了我的三天。我正在为这些过程使用 asynctask。请帮助我。

protected void onListItemClick(ListView l, View v, final int position,
        long id) {
    super.onListItemClick(l, v, position, id);

    progressDialog = ProgressDialog.show(ProjectListActivity.this,
            "Please wait...", "Loading...");

    new Thread() {

        public void run() {

            try {
                String project = titles.get(position - 1);

                performBackgroundProcess(project);

            } catch (Exception e) {

                Log.e("tag", e.getMessage());

            }

            progressDialog.dismiss();
        }

    }.start();

}



   private void performBackgroundProcess(String project) {

    String spaceId = null;
    String spaceName = null;
    /*
     * for (Space space : spaces){
     * if(space.getName().equalsIgnoreCase((String) ((TextView)
     * v).getText())){ spaceId = space.getId(); } }
     */
    for (Space space : spaces) {

        if (project.equals(space.getName())) {

            newSpace = space;
        }

    }

    spaceId = newSpace.getId();
    spaceName = newSpace.getName();

    /*
     * Intent intent = new Intent(this, SpaceComponentsActivity.class);
     * intent.putExtra("spaceId", spaceId); intent.putExtra("tabId", 0);
     * intent.putExtra("className", "TicketListActivity"); TabSettings ts =
     * new TabSettings(); ts.setSelTab(1); this.startActivity(intent);
     */
    Intent intent = new Intent(this, SpaceComponentsActivity.class);
    intent.putExtra("spaceId", spaceId);
    intent.putExtra("tabId", 0);
    intent.putExtra("spaceName", spaceName);

    // intent.putExtra("className", "TicketListActivity");
    TabSettings ts = new TabSettings();
    ts.setSelTab(0);
    ts.setSelTabClass("TicketListActivity");
    this.startActivity(intent);

    /*
     * Toast.makeText(getApplicationContext(), ((TextView) v).getText(),
     * Toast.LENGTH_SHORT).show();
     */
}

最佳答案

对于你的情况使用这个...

使 progressDialog 对您的 Activity 公开

progressDialog = ProgressDialog.show(ProjectListActivity.this,
        "Please wait...", "Loading...");

new Thread() {

    public void run() {

        try {
            String project = titles.get(position - 1);

            performBackgroundProcess(project);
            ProjectListActivity.this.runOnUiThread(new Runnable() {

        @Override
        public void run() {
            progressDialog.dismiss();

        }
    });

        } catch (Exception e) {

            Log.e("tag", e.getMessage());

        }


    }

}.start();

但这不是一个好的方法使用AsyncTask .

关于android - 应用程序显示黑屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11535088/

相关文章:

java - 热向 Listview 添加多个项目 simple_list_item_1

android - 将应用内购买添加到现有已发布的应用程序并在不发布的情况下对其进行测试

android - 如何在 Android 的 getView() 函数中取消从隐藏项执行的 AsyncTask?

加载 WebView 时的 Android 进度条

java - 如何在多个异步任务完成后启动新的 Activity

Eclipse : Strange Error Message 中的安卓开发

android - 如何检查相机是否支持使用 CameraX 在 Android 上自动对焦?

android - NoClassDefFoundError:解析失败:Landroid/support/v4/os/BuildCompat;

java - onPreExecute() 和 onPostExecute() 是在 UI 线程上执行还是在启动 AsyncTask 的线程上执行?

java - 哪里应该使用AsyncTask,哪里不应该使用AsyncTask?