- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
在 http://developer.android.com/guide/components/loaders.html 上找到的加载器的 Android 文档中它说装载机的特性之一是:
They automatically reconnect to the last loader's cursor when being recreated after a configuration change. Thus, they don't need to re-query their data.
以下代码似乎没有反射(reflect)这种行为,创建了一个新的加载器并完成了对 ContentResolver 的查询,然后我旋转屏幕并重新创建了加载器!
public class ReportFragment extends Fragment implements LoaderCallbacks<Cursor> {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getLoaderManager().initLoader(1, null, this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_report, container, false);
return v;
}
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
Log.d("TEST", "Creating loader");
return new CursorLoader(getActivity(), ResourcesContract.Reports.CONTENT_URI, null, null, null, null);
}
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
Log.d("TEST", "Load finished");
}
public void onLoaderReset(Loader<Cursor> arg0) {
}
}
这是我的 logcat 的输出:
08-17 16:49:54.474: D/TEST(1833): Creating loader
08-17 16:49:55.074: D/TEST(1833): Load finished
*Here I rotate the screen*
08-17 16:50:38.115: D/TEST(1833): Creating loader
08-17 16:50:38.353: D/TEST(1833): Load finished
知道我在这里做错了什么吗?
编辑:
我应该注意,我正在构建 Android Google API 版本 8,并使用 v4 支持库。
第二次编辑:
这很可能是由于支持库中的错误,如果您想了解更多信息,请查看此错误提交:
最佳答案
虽然这是一个老问题,但我遇到了与 OP 相同的问题。使用加载器,我需要在导航到新 Activity 时重新启动它,然后再返回。但同时,我不希望加载器在我旋转手机屏幕时重新启动。
我发现可以在 onRestart() 中实现这一点,如果你在调用它的 super 之前重新启动加载器。
public class MainActivity extends AppCompatActivity implements
LoaderManager.LoaderCallbacks<Cursor> {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
//Initialize the loader.
getSupportLoaderManager().initLoader(0, null, this);
}
@Override
protected void onRestart() {
//Restart the loader before calling the super.
getSupportLoaderManager().restartLoader(LOADER_ID, null, this);
super.onRestart();
}
...
}
关于android - 装载机在方向改变时重新启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009895/
我在一项 Activity 中使用了一个装载机。我能够启动加载程序并调用 onLoadFinished。当我更新数据并在加载程序中调用 onContentChanged 时,我看到 loadInBac
我正在尝试使用 liac-arff 库将 .arff 文件加载到 numpy 数组中。 ( https://github.com/renatopp/liac-arff ) 这是我的代码。 import
我最近在 three.js 中尝试了一些使用 Blender 和 Collada Loader 的实验。在我的 Blender 场景中,我有三个对象,但当然我只能使用 three.js 和加载器管理一
我正在通过 将 Parquet 数据加载到数据框中 spark.read.parquet('hdfs:///path/goes/here/...') 由于 parquet 分区,该路径中约有 50k
我是一名优秀的程序员,十分优秀!