首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AsyncTaskLoader -如何操作?

AsyncTaskLoader -如何操作?
EN

Stack Overflow用户
提问于 2018-01-09 23:15:27
回答 1查看 28关注 0票数 0

我使用加载器在后台的方法loadInBackground中执行任务,我添加了for循环来打印logcat中的日志50次,所以当我单击按钮start print log in logcat时

但是当我点击按钮时,我没有任何动作,也没有ant错误,有什么问题吗?

代码语言:javascript
复制
 mainActicity 
    public class MainActivity extends AppCompatActivity implements android.app.LoaderManager.LoaderCallbacks<String> {
      TextView textView;
      android.app.LoaderManager loaderManager;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            loaderManager=getLoaderManager();
            textView=findViewById(R.id.tv_result);
            if (loaderManager.getLoader(0) ==null){
                loaderManager.initLoader(0,null,this);

            }
        }




    public void StartMysynstack (View view){
        loaderManager.initLoader(0,null,this);
    }

    @Override
    public android.content.Loader<String> onCreateLoader(int i, Bundle bundle) {
        return new Myloader(this);
    }

    @Override
    public void onLoadFinished(android.content.Loader<String> loader, String s) {
          textView.setText(s);
    }

    @Override
    public void onLoaderReset(android.content.Loader<String> loader) {

    }

}

我的加载器

代码语言:javascript
复制
public class Myloader extends AsyncTaskLoader<String> {
 int i;

    public Myloader(Context context) {
        super(context);
    }

    @Override
    public String loadInBackground() {
        for( i=0;i<=100;i++){
            try {
                Thread.sleep(50);
                Log.d("waad","loadInBackground"+i);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return "Task result";
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-09 23:25:40

您可以尝试手动调用它。

代码语言:javascript
复制
getLoaderManager().initLoader(0, null, this).forceLoad();

因此,根据您的代码,您可以进行以下更改。

代码语言:javascript
复制
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        loaderManager=getLoaderManager();
        textView=findViewById(R.id.tv_result);
        if (loaderManager.getLoader(0) ==null){
            loaderManager.initLoader(0,null,this).forceLoad();;

        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48171253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档