【问题标题】:AsynTask background or notAsyncTask 后台与否
【发布时间】:2016-02-23 09:48:26
【问题描述】:

我有一个问题。 在我的内部类chargeAdapterAsync 中,我得到了mDataModel

class chargeAdapterAsync extends AsyncTask< String, String, String >
{
    @Override
    protected String doInBackground( String... action )
    {
        mImageLoader = ImageLoaderFactory.create( context );
        // set up data
        mDataModel = new WhaskListDataModel( context, 10 );
        mAdapter = new PagedListViewDataAdapter< UserWhasks >( );
        mAdapter.setViewHolderClass( this, WhaskListItemViewHolder.class, mImageLoader );
        mAdapter.setListPageInfo( mDataModel.getListPageInfo( ) );

        return null;
    }

    @Override
    protected void onPostExecute( String o )
    {
        super.onPostExecute( o );
        mListView.setAdapter( mAdapter );
    }
}

当我进入我的WhaskListDataModel:

public class WhaskListDataModel extends PagedListDataModel<UserWhasks> {

    private Context activity;
    private ListWhasksPagination listWhasksPagination;

    public WhaskListDataModel(Context activity, int numPerPage) {
        mListPageInfo = new ListPageInfo<UserWhasks>(numPerPage);
        this.activity = activity;
        listWhasksPagination = new ListWhasksPagination(activity, numPerPage);
    }

    public void prependItem(UserWhasks item) {
        WhaskListDataEvent data = new WhaskListDataEvent();
        Arra

然后我得到ListWhasksPagination类,当我进去时,我得到:

public ListWhasksPagination(Context activity, int limitArr) {
    currentList = new ArrayList<>();
    completeList = new ArrayList<>();
    completeList = getWhasksResult(activity);
    this.limitArr = limitArr;
    firtItem = -1;
    lastItem = 0;
}

private ArrayList<UserWhasks> getWhasksResult(Context activity){
    ArrayList<UserWhasks> sortedWhasks = new ArrayList<>();
    magnetClient = MagnetMobileClient.getInstance(activity);
    try {
        controllerFactory = new UserFactory(magnetClient);
        user = controllerFactory.obtainInstance();
        Call<WhasksPostsResult> callObject = user.getWhasks(
                SharedPreference.ID,
                SharedPreference.AUTHORIZATION, null);
        WhasksPostsResult result = callObject.get();
        for(WhasksResult whask : result.getWhasks()) {
            sortedWhasks.add(new UserWhasks(whask));
        }
        Collections.sort(sortedWhasks, Collections.reverseOrder());
        return sortedWhasks;
    } catch (SchemaException e) {
        Log.e(Constant.LOG_TAG, "can't get userController", e);
    } catch (ExecutionException e) {
        Log.e(Constant.LOG_TAG, "failed to execute getUser", e);
        e.printStackTrace();
    } catch (InterruptedException e) {
        Log.e(Constant.LOG_TAG, "getUser interrupted", e);
    }
    return sortedWhasks;
}

getWhaskResult 的最后一堂课中,我得到了一些元素,我想知道getWhaskResult 方法甚至ListWhaskPagination 类是否也在后台:/

【问题讨论】:

  • 很难理解您的问题是什么。请解释清楚或使用一些示例代码
  • 很难解开你的问题。但是您在 AsyncTask 的 doInBackground 方法中所做的每一件事都在后台线程池中运行/

标签: java android asynchronous android-asynctask


【解决方案1】:

作为一般规则,在后台执行的代码在doInBackground 方法中。其他代码没有。

所以在doInBackground 中你是mDataModel = new WhaskListDataModel( context, 10 );,它调用getWhaskResult。所以getWhaskResult会在后台执行

【讨论】:

    【解决方案2】:

    是的 getWhaskResult 在后台执行,因为它是从 doInBackground 调用的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多