Iris Louis
Iris Louis

Reputation: 297

Start activity is slow

I'm write a music application online.But i'm meet a problem... A new activity starts slowly when I select an item in listview... I don't know resolve, please help me ! :( Sorry. I'm speak English very bad :(

This is my code:

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...");
    }
}

Upvotes: 0

Views: 4020

Answers (1)

Shivam Verma
Shivam Verma

Reputation: 8023

You're starting the new activity inside onPostExecute() which executes only after you've completed doInBackground(). Hence, the time delay.

Ideally, you should start the activity just after you execute your AsyncTask. The AsyncTask will continue in the background while your activity changes.

Upvotes: 2

Related Questions