Я звоню GraphRequest
для Facebook комментировать счет в ListView
Адаптер getView()
. Вот мой кодНесколько вызовов Facebook GraphRequest crash app
public class FeedListAdapter extends BaseAdapter {
.
.
.
@Override
public int getCount() {
return feedItems.size();
}
@Override
public Object getItem(int location) {
return feedItems.get(location);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
.
.
.
requestComments(feedItems.get(position).getObjectId(), viewHolder.tvPostCommentCount);
}
private void requestComments(String objectId, final TextView textViewCommentCount) {
Bundle parameters = new Bundle();
parameters.putString("filter", "toplevel");
parameters.putString("summary", "true");
new GraphRequest(
AccessToken.getCurrentAccessToken(),
"/"+objectId+"/comments?limit=3",
parameters,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
LOGMSG.SHOW(TAG+"requestComments() -> onCompleted()");
try {
JSONObject responseJsonObject = response.getJSONObject();
LOGMSG.SHOW(TAG+"requestComments() -> responseJsonObject:"+responseJsonObject);
JSONObject summaryJsonObject = responseJsonObject.getJSONObject("summary");
LOGMSG.SHOW(TAG+"requestComments() -> summaryJsonObject:"+summaryJsonObject);
textViewCommentCount.setText(NumberUtils.kFormatter(summaryJsonObject.getLong("total_count")));
}catch (Exception e) {
e.printStackTrace();
}
}
}
).executeAsync();
}
}
Как число вызовы GraphRequest
увеличения приложения получить аварийное завершение из-за максимальное количество активных потоков.
Вот Вход
java.util.concurrent.RejectedExecutionException: Task [email protected] rejected from [email protected][Running, pool size = 9, active threads = 9, queued tasks = 128, completed tasks = 61]
at java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2011)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:793)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1339)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:594)
at com.facebook.GraphRequest.executeBatchAsync(GraphRequest.java:1225)
at com.facebook.GraphRequest.executeBatchAsync(GraphRequest.java:1204)
at com.facebook.GraphRequest.executeBatchAsync(GraphRequest.java:1187)
at com.facebook.GraphRequest.executeAsync(GraphRequest.java:998)
at com.ifahja.adapter.FeedListAdapter.requestLikes(FeedListAdapter.java:345)
at com.ifahja..adapter.FeedListAdapter.getView(FeedListAdapter.java:227)
at android.widget.HeaderViewListAdapter.getView(HeaderViewListAdapter.java:220)
at android.widget.AbsListView.obtainView(AbsListView.java:2347)
at android.widget.ListView.measureHeightOfChildren(ListView.java:1270)
at android.widget.ListView.onMeasure(ListView.java:1182)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.support.v7.widget.ActionBarOverlayLayout.onMeasure(ActionBarOverlayLayout.java:391)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1436)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:722)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:613)
at android.view.View.measure(View.java:17565)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5537)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:436)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2615)
at android.view.View.measure(View.java:17565)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2045)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1196)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1409)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1084)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5990)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographe
Теперь мой вопрос заключается в том, чтобы вызвать GraphRequst
разрешить параллельное выполнение потоков, чтобы избежать указанной проблемы.
Ваш отзыв был бы благодарен.
Спасибо за ваш анс, но ваш код с, и моим код GraphRequst такой же –
может у плз объяснить больше BCZ я не могу понять то, что у пытаюсь сделать ... –
Дорогой, если вы читаете 2-й линии журнал, говорящий о размере пула = 9, активных нитях = 9, я думаю, что это означает, что приложение превышает предел активных потоков. В AsyncTask существует метод executeOnExecutor (AsyncTask.THREAD_POOL_EXECUTOR); для преодоления проблемы –