我使用加载器在后台的方法loadInBackground中执行任务,我添加了for循环来打印logcat中的日志50次,所以当我单击按钮start print log in logcat时
但是当我点击按钮时,我没有任何动作,也没有ant错误,有什么问题吗?
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) {
}
}我的加载器
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";
}
}发布于 2018-01-09 23:25:40
您可以尝试手动调用它。
getLoaderManager().initLoader(0, null, this).forceLoad();因此,根据您的代码,您可以进行以下更改。
@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();;
}
}https://stackoverflow.com/questions/48171253
复制相似问题