Android LoaderManager AsyncTaskLoader cancelLoad不deliverResult,Java
2023.04.13 / 小杰
Android LoaderManager AsyncTaskLoader cancelLoad不deliverResult,Java
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.loader.app.LoaderManager;
import androidx.loader.content.AsyncTaskLoader;
import androidx.loader.content.Loader;
import android.content.Context;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private static String TAG = "fly";
private LoaderManager loaderManager;
private static int index = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.start).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
index++;
Log.d("fly", "--" + index + "--");
Log.d("fly", "开始新任务" + index);
loaderManager.getLoader(2023).forceLoad();
}
});
findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("fly", "放弃加载" + index);
loaderManager.getLoader(2023).cancelLoad(); //deliverResult不执行
}
});
setupLoader();
}
private void setupLoader() {
loaderManager = LoaderManager.getInstance(this);
loaderManager.initLoader(2023, new Bundle(), loaderCallbacks);
}
private LoaderManager.LoaderCallbacks loaderCallbacks = new LoaderManager.LoaderCallbacks<String>() {
@NonNull
@Override
public MyTask onCreateLoader(int id, @Nullable Bundle args) {
Log.d(TAG, "onCreateLoader- id - " + id);
MyTask loader = new MyTask(getApplicationContext());
return loader;
}
@Override
public void onLoadFinished(@NonNull Loader<String> loader, String data) {
Log.d(TAG, "onLoadFinished- " + loader.getId() + " " + data);
}
@Override
public void onLoaderReset(@NonNull Loader loader) {
}
};
private static class MyTask extends AsyncTaskLoader<String> {
public MyTask(@NonNull Context context) {
super(context);
}
@Nullable
@Override
public String loadInBackground() {
Log.d("fly", index + " loadInBackground 开始@" + Thread.currentThread().getId());
SystemClock.sleep(5000);
Log.d("fly", index + " loadInBackground 结束@" + Thread.currentThread().getId());
return index + "";
}
@Override
public void deliverResult(@Nullable String data) {
super.deliverResult(data);
Log.d("fly", "deliverResult -> " + data + " 结束");
}
@Override
protected void onStopLoading() { //绑定的Activity生命周期自动执行,切入后台
super.onStopLoading();
Log.d("fly", "onStopLoading");
}
@Override
protected void onStartLoading() { //绑定的Activity生命周期自动执行,切入前台
super.onStartLoading();
}
@Override
public void onCanceled(@Nullable String data) {
super.onCanceled(data);
Log.d("fly", "onCanceled @" + Thread.currentThread().getId());
}
}
@Override
protected void onStart() {
super.onStart();
Log.d(TAG, "---");
Log.d(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
}
@Override
protected void onStop() {
super.onStop();
Log.d(TAG, "onStop");
}
}
android ,LoaderManager.LoaderCallbacks与AsyncTaskLoader, Java(2)_zhangphil的博客-CSDN博客android LoaderManager与AsyncTaskLoader,java(1)_zhangphil的博客-CSDN博客。android LoaderManager与AsyncTaskLoader,java(1)https://blog.csdn.net/zhangphil/article/details/129625669
android LoaderManager与AsyncTaskLoader,java(1)_zhangphil的博客-CSDN博客android LoaderManager与AsyncTaskLoader,java(1)https://blog.csdn.net/zhangphil/article/details/129622307
https://zhangphil.blog.csdn.net/article/details/129582389https://zhangphil.blog.csdn.net/article/details/129582389
- END -
把ChatGPT接入我的个人网站

效果图 详细内容和使用说明可以查看我的个人网站文章 把ChatGPT接入我的个人网站 献给有外网服务器...
香橙派pi5下,debian,docker19.03.9版本runc容器逃逸

在香橙派pi5下,debian,docker19.03.9版本下,安装系统后,启动docker,显示一切正常。 当加入k8s集群以后...
企业seo,企业网站的搜索引擎推广与优化
SEO搜索引擎优化不是一个大的神秘现象,它是一个路线图。这就是为什么我们整理了一份清单,其中列出了您需要...
2023年MathorCup数模A题赛题详细思路

MathorCup俗称妈杯,是除了美赛国赛外参赛人数首屈一指的比赛,而我们的妈杯今天也如期开赛。今...
html 注释,html注释符号怎么打
大家好,我是小富~最近接触到个新项目,发现它用了一个比较有意思的框架,可以说实现了我刚入行时候的梦想,...