Как я могу реализовать AsyncTask в моей текущей деятельности
Активность в моем Android-приложении загружается невероятно медленно, он загружает твиты в RecyclerView с помощью TwitterKit. LogCat отображает следующее сообщение: "
Пропущено 1491 кадров! Приложение может выполнять слишком много работы над своим основным потоком "
После некоторых исследований я понимаю, что мне нужно реализовать AsyncTask, чтобы переместить рабочую нагрузку из основного потока. Я пытался реализовать это, однако, я не могу заставить его работать. Точка в правильном направлении будет высоко ценится. Пожалуйста, смотрите код ниже
import android.app.ListActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Toast;
//twitter imports
import com.twitter.sdk.android.core.Twitter;
import com.twitter.sdk.android.tweetui.TweetTimelineRecyclerViewAdapter;
import com.twitter.sdk.android.tweetui.UserTimeline;
public class travel_updates extends AppCompatActivity{
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
getSupportActionBar().setDisplayShowCustomEnabled(true);
getSupportActionBar().setCustomView(R.layout.custom_line_info);
View view = getSupportActionBar().getCustomView();
Twitter.initialize(this);
workHorse workhorse = new workHorse();
workHorse.execute(UserTimeline);
final RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
}
private class workHorse extends AsyncTask<String, Void, String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
final UserTimeline searchTimeline = new UserTimeline.Builder().screenName("TflTravelAlerts")
.maxItemsPerRequest(20)
.build();
final TweetTimelineRecyclerViewAdapter adapter =
new TweetTimelineRecyclerViewAdapter.Builder(this)
.setTimeline(searchTimeline)
.setViewStyle(R.style.tw__TweetLightWithActionsStyle)
.build();
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
}
}
}
1 ответ
Вы можете выполнить следующую задачу, чтобы получить точную проблему,
- Просто выполнить
AsyncTask
и прокомментируйте весь оставшийся код. Таким образом, вы можете узнать, вашAsyncTask
В порядке или нет. - Попробуйте выполнить
AsyncTask
наконец, когда все другие задачи будут выполнены. - Попробуйте оптимизировать свою активность, чтобы избежать медленной работы.