Android 启动活动缓慢
我正在写一个在线音乐应用程序。但是我遇到了一个问题。。。当我在listview中选择一个项目时,新活动会缓慢启动。。。 我不知道该怎么办,请帮帮我( 对不起,我英语说得很差:( 这是我的代码:Android 启动活动缓慢,android,android-activity,android-asynctask,Android,Android Activity,Android Asynctask,我正在写一个在线音乐应用程序。但是我遇到了一个问题。。。当我在listview中选择一个项目时,新活动会缓慢启动。。。 我不知道该怎么办,请帮帮我( 对不起,我英语说得很差:( 这是我的代码: public class startNewActivity extends AsyncTask<String, Void, String> { private Activity activity; private String selectDoc = "div.gen img"
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...");
}
}
公共类startNewActivity扩展异步任务{
私人活动;
私有字符串selectDoc=“div.gen img”;
私有字符串attr=“title”;
私有字符串结果;
公共质量;
公共启动活动(活动){
这个。活动=活动;
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
nameSong=(字符串)lvSong.getItemAtPosition(positionId);
link=linkSong.get(Integer.valueOf(obj.toString());
质量=Utils.getQuality(链接、选择文档、属性、结果);
Log.i(“质量”,质量);
changeLink=link.replace(“.html”,“_download.html”)。子字符串(15)
.replaceFirst(“,”http://download")
.替换(“nhac hot”、“mp3.concat”(/vietnam/v-pop”);
Log.i(“变更链接”,变更链接);
试一试{
//连接互联网
linkIntent=Utils.getLinkPlay(选择LinkPlay、changeLink、,
后更换连接);
}捕获(例外e){
Toast.makeText(getApplicationContext(),
“服务器出现问题…请等待分钟”,
吐司。长度(短)。show();
}
返回链接意图;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//我在这里需要帮助
意向i=新意向(SongActivity.this、PlayMusicActivity.class);
i、 putExtra(“歌曲”,链接意图);
i、 普特拉(“纳松”,纳松);
i、 额外(“质量”,质量);
i、 设置标志(意图、标志、活动、新任务);
活动性、触觉性(i);
pDialog.disclose();
super.onPostExecute(结果);
}
@凌驾
受保护的void onPreExecute(){
pDialog=ProgressDialog.show(SongActivity.this,“,
“请稍等……”;
}
}
您正在onPostExecute()
内启动新活动,该活动仅在您完成doInBackground()
后执行。因此,时间延迟
理想情况下,您应该在执行AsyncTask后立即启动活动。当您的活动更改时,AsyncTask将在后台继续。使用Traceview确定您的时间花费在哪里。您编写了什么代码hv u onClick?plz postthat@CommonsWare我是新手:(.但活动开始时单击大约3-4秒第一次…我知道你回答我的问题…我现在将编辑我的代码。我开始播放音乐活动,并在播放前处理它。)