나는 8 일 동안 동일한 문제가 발생했으며 누군가가 나를 도울 수 있기를 바란다. 여러 RSS 피드를 구문 분석하고 목록 뷰에 조각을 표시하는 응용 프로그램에서 작업하고 있지만 문제는 UI 2 ~ 4 초 동안 차단되고 사용자가 화면을 터치 할 때마다 응용 프로그램이 중단됩니다. 문제를 추적 한 결과 데이터를 비동기 적으로 가져와야한다는 사실을 알게되었습니다. 실제로는 그렇게했으나 조각이있을 때마다 같은 문제가 발생합니다. 실제로 데이터 조각을 주 스레드에서 가져 오는 경우 조각을 차단하면 실제로 데이터를 비동기 적으로 가져 오는 반면 차단 이유는 알 수 없습니다. 내가 코드를 변경하는 방법프래그먼트 및 AsyncTask
이되고, 이것은 내가 좋아하는 내 조각 여기에 그것을 얻을 내 인터페이스
public interface OnTaskFinishedListener {
void onTaskFinished(ArrayList<Article> articles);
}
내가 마지막으로이
public class AndroidSaxFeedParserAsync extends AsyncTask<String, Long,ArrayList<Article>> {
ArrayList<Article> rssItems = new ArrayList<Article>();
public URL feedUrl;
OnTaskFinishedListener onTaskFinishedListener;
public AndroidSaxFeedParserAsync(OnTaskFinishedListener _onTaskFinishedListener)
{
onTaskFinishedListener = _onTaskFinishedListener ;
}
@Override
protected void onPostExecute(ArrayList<Article> result) {
super.onPostExecute(result);
onTaskFinishedListener.onTaskFinished(result);
}
@Override
protected ArrayList<Article> doInBackground(String... params) {
//....
return rssItems;
}
}
와 같은 AsyncTask를에 ArrayList에 무엇입니까이다 이
public class FeedPlayerIndexFragment extends SherlockFragment implements OnTaskFinishedListener{
String url="http://www.whatever.com/index.php?format=feed&type=rss";
ArrayList<Article> feeds;
ItemAdapterArticle lfa;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
new AndroidSaxFeedParserAsync(new OnTaskFinishedListener() {
@Override
public void onTaskFinished(ArrayList<Article> articles) {
}
}).execute(url);
View view=inflater.inflate(R.layout.main, container, false);
//....
return view;
}
@Override
public void onTaskFinished(ArrayList<Article> articles) {
lfa = new ItemAdapterArticle(getActivity().getApplicationContext(), articles);
}
}
코드를 사용해 보았지만 ArrayList에서 Fragment가 null을 반환하면 코드 –
@ user1664332를 작성할 수 있습니까? 코드를 작성할 수 없으며 프리랜서가 아닙니다. 나는 당신에게 해결책에 대한 아이디어를주었습니다. 이제는 그것을 구현하는 것이 당신의 임무입니다. 아이디어를 완전히 이해하지 못했다면 언제든지 질문하십시오. – Egor
나 자신에 의해 implemnt 할 수 있도록 제발, 내가 따라야 할 단계를 줘, 지금까지 내가 내 인터페이스를 만들고 조각을 구현하고 내가 생성자 AsyncTask (OnTaskFinishedListener)를 만들 때까지 나는 두 개의 onTaskFinished 메서드를 하나의 인터페이스의 구현에 덤프하고 두 번째는 asyncTask의 onPartExecute()에서 onTaskFinished()를 호출하여 프래그먼트와 finallt에서 AsyncTask를 호출하기 때문에 발생하지만 아무것도 결과가 없습니다. . –