【问题标题】:How can I implement AsyncTask into my current Activity如何将 AsyncTask 实现到我当前的活动中
【发布时间】:2017-11-14 22:49:40
【问题描述】:

我的 Android 应用程序中的 Activity 加载速度非常慢,它使用 TwitterKit 将推文加载到 RecyclerView 中。 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);
        }
    }
}

【问题讨论】:

  • 您无法在 stackoverflow 或 google 上搜索“AsyncTask”?
  • 过去 7 小时我都做了,但一无所获
  • 您搜索了“AsyncTask”,却一无所获?这很难相信。无论如何,这是一个链接stackoverflow.com/questions/9671546/…

标签: android android-asynctask android-recyclerview twitterkit


【解决方案1】:

您可以执行以下任务来解决问题,

  1. 只需执行AsyncTask 并注释整个剩余代码。这样你就可以真正了解你的AsyncTask 是否正常。
  2. 当所有其他任务都完成后,最后尝试执行AsyncTask
  3. 尝试优化您的 Activity 以摆脱缓慢的性能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2019-09-11
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2016-03-11
    相关资源
    最近更新 更多