开始活动很慢

时间:2014-07-12 13:11:03

标签: android android-activity android-asynctask

我在网上写了一个音乐应用程序。但是我遇到了一个问题...当我在listview中选择一个项目时,一个新的活动开始很慢... 我不知道决心,请帮助我! :( 抱歉。我说英语非常糟糕:(

这是我的代码:

public class startNewActivity extends AsyncTask<String, Void, String> {
    private Activity activity;
    private String selectDoc = "div.gen img";
    private String attr = "title";
    private String result;
    public String Quality;

    public startNewActivity(Activity activity) {
        this.activity = activity;
    }

    @Override
    protected String doInBackground(String... arg0) {
        nameSong = (String) lvSong.getItemAtPosition(positionId);
        link = linkSong.get(Integer.valueOf(obj.toString()));

        Quality = Utils.getQuality(link, selectDoc, attr, result);
        Log.i("Quality", Quality);
        changeLink = link.replace(".html", "_download.html").substring(15)
                .replaceFirst("", "http://download")
                .replace("nhac-hot", "mp3".concat("/vietnam/v-pop"));
        Log.i("Change link", changeLink);
        try {
          //Connect internet
            linkIntent = Utils.getLinkPlay(selectLinkPlay, changeLink,
                    afterChangeLink);
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(),
                    "Server has problem... Please while for minutes",
                    Toast.LENGTH_SHORT).show();
        }
        return linkIntent;
    }

    @Override
    protected void onPostExecute(String result) {
     //i'm want help here
        Intent i = new Intent(SongActivity.this, PlayMusicActivity.class);
        i.putExtra("song", linkIntent);
        i.putExtra("namesong", nameSong);
        i.putExtra("Quality", Quality);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        activity.startActivity(i);
        pDialog.dismiss();
        super.onPostExecute(result);
    }

    @Override
    protected void onPreExecute() {
        pDialog = ProgressDialog.show(SongActivity.this, "",
                "Please wait...");
    }
}

1 个答案:

答案 0 :(得分:2)

您正在onPostExecute()内开始新活动,该活动仅在您完成doInBackground()后执行。因此,时间延迟。

理想情况下,您应该在执行AsyncTask之后立即启动活动。当您的活动发生变化时,AsyncTask将在后台继续。