小编iam*_*tar的帖子

为什么在通知观察者之前需要调用setChanged?

我最近读过Java的Observable类.我不明白的是:在通知观察者之前(notifyObservers())我必须调用setChanged().notifyObservers方法中有一个布尔值,要求我们调用setChanged.布尔值的目的是什么?为什么我必须调用setChanged()?

java

25
推荐指数
1
解决办法
1万
查看次数

在使用空的while循环初始化片段之前等待导航抽屉关闭

根据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循环,我怎样才能达到这个效果?

java multithreading android android-fragments navigation-drawer

5
推荐指数
1
解决办法
1961
查看次数