我想使用演示是爲了說明這一點:裝載機無法重新啓動後的方向改變
enter code here
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(buttonClickListener);
}
private OnClickListener buttonClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startMyLoader();
}
};
private void startMyLoader() {
getLoaderManager().destroyLoader(0);
getLoaderManager().restartLoader(0, null, myLoaderListener);
}
/**
* The listener for the group metadata loader.
*/
private final LoaderManager.LoaderCallbacks<Cursor> myLoaderListener
= new LoaderCallbacks<Cursor>() {
@Override
public CursorLoader onCreateLoader(int id, Bundle args) {
return new CursorLoader(LoaderDemoActivity.this,
ContactsContract.Contacts.CONTENT_URI,
null, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
cursor.moveToPosition(-1);
if (cursor.moveToNext()) {
Context context = getApplicationContext();
CharSequence text = "Load finished!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
};
enter code here
方向改變後,我點擊該按鈕, 的onCreateLoader可以調用, 但onLoadFinished會不叫。
這似乎很奇怪。
感謝您的幫助。
我不認爲這是一個正確的方法來調用forceLoad()手動如果你打算使用loaderManager來控制所有這一切。 – user1335719 2012-04-17 14:42:17
@ user1335719沒有這樣的限制,它只是'必須從進程的主線程調用.'並且加載程序必須啓動(檢查'isStarted()'),這在使用initLoader進行回調後很明顯。 'startLoading()'和'stopLoading' methdos用於內部使用,而不是'forceLoad'。 – 2012-04-17 15:10:38