gpt4 book ai didi

android - 在异步任务完成应用程序类中的后台进程之前调用 Activity 类

转载 作者:行者123 更新时间:2023-11-29 14:15:21 24 4
gpt4 key购买 nike

我有一个类扩展 Application 类以在任何 Activity 启动之前加载一些数据。我在那里做了一些 json 解析,但问题是 Activity 类在 doInBackground 在应用程序类中完成之前被调用,这就是为什么我第一次得到一个没有任何值的变量。这是我的代码,我需要一个解决方案,请帮助!

public class AppGlobalData extends Application {
public ArrayList<YoutubeItem> gotItem = new ArrayList<YoutubeItem>();
public YouTubeParser parser;

@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();

parser = new YouTubeParser(
"http://powergroupbd.com/youtube/getyoutubejson.php");
new ParserLoader().execute();

}

public class ParserLoader extends AsyncTask<Void, Void, Void> {

@Override
protected Void doInBackground(Void... params) {

try {
gotItem = parser.parseInitiator();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;
}
}

public ArrayList<YoutubeItem> getGotItem() {
return gotItem;
}

public void setGotItem(ArrayList<YoutubeItem> gotItem) {
this.gotItem = gotItem;
}

}

另一点是,如果我在onCreate中解析数据,它在较低版本的android中工作,但在ICS中它会导致网络主线程异常。

最佳答案

启动一个 Activity 并尝试保持 onCreate 事件直到数据被处理或接收不是一个好的做法。而是覆盖将在 doInBackground 完成后执行的 AsyncTask 中的 onPostExecute 方法。

protected void onPostExecute(Void v) {
// Add your code here !!!
}

在 ICS 上出现主线程异常的原因是因为您正在运行一些网络主 UI 线程上的 API (YouTubeParser)。

试试这个。

Thread t = new Thread(new Runnable() {
public void run() {
parser = new YouTubeParser(
"http://powergroupbd.com/youtube/getyoutubejson.php");
new ParserLoader().execute();
}
}
t.start();

关于android - 在异步任务完成应用程序类中的后台进程之前调用 Activity 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18794995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com