iam*_*tar 5 java multithreading android android-fragments navigation-drawer
根据DrawerLayout文档,"避免在动画期间执行昂贵的操作,例如布局,因为它可能导致卡顿".
因此,我试着在继续之前等待抽屉关闭:
@Override public void onItemClick(AdapterView parent
, View view
, int position
, long id) {
// Close the drawer
mDrawerLayout.closeDrawer(mDrawerList);
ExecutorService es = Executors.newSingleThreadExecutor();
final int mPosition = position;
Thread navThread = new Thread(new Runnable() {
@Override public void run() {
// Wait for the drawer to close
while (mDrawerLayout.isDrawerOpen(mDrawerList));
// Initialize the Fragments.
runOnUiThread(new Runnable() {
@Override public void run() {
selectNavigationItem(mPosition);
}
});
}
});
es.submit(navThread);
es.shutdown();
}
Run Code Online (Sandbox Code Playgroud)
虽然它有效,但Lint警告我关于空循环.如果没有空的while循环,我怎样才能达到这个效果?
在ListView.OnItemClickListener:
@Override public void onItemClick(AdapterView parent
, View view
, int position
, long id) {
mPosition = position;
mNavigationItemClicked = true;
mDrawerLayout.closeDrawer(mDrawerList);
}
Run Code Online (Sandbox Code Playgroud)
在DrawerLayout:
public void onDrawerClosed(View view) {
getSupportActionBar().setTitle(mTitle);
if (mNavigationItemClicked)
selectNavigationItem();
mNavigationItemClicked = false;
}
Run Code Online (Sandbox Code Playgroud)
在selectNavigationItem():
switch (mPosition) {
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1961 次 |
| 最近记录: |