То, сколько Windows обрабатывает используемый, является “слишком многими”?

Если вы используете MediaController в сочетании с VideoView, то будет относительно легко расширить его и добавить к нему собственного слушателя.

Тогда пользовательский VideoView будет выглядеть примерно так в его самой основной форме:

public class CustomVideoView extends VideoView {

    private PlayPauseListener mListener;

    public CustomVideoView(Context context) {
        super(context);
    }

    public CustomVideoView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomVideoView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void setPlayPauseListener(PlayPauseListener listener) {
        mListener = listener;
    }

    @Override
    public void pause() {
        super.pause();
        if (mListener != null) {
            mListener.onPause();
        }
    }

    @Override
    public void start() {
        super.start();
        if (mListener != null) {
            mListener.onPlay();
        }
    }

    public static interface PlayPauseListener {
        void onPlay();
        void onPause();
    }

}

Использование его идентично использованию обычного VideoView, с той лишь разницей, что мы можем теперь подключить наш собственный слушатель этого.

// Some other code above...
CustomVideoView cVideoView = (CustomVideoView) findViewById(R.id.custom_videoview);
cVideoView.setPlayPauseListener(new CustomVideoView.PlayPauseListener() {

    @Override
    public void onPlay() {
        System.out.println("Play!");
    }

    @Override
    public void onPause() {
        System.out.println("Pause!");
    }
});

cVideoView.setMediaController(new MediaController(this));
cVideoView.setVideoURI(...);
// or
cVideoView.setVideoPath(...);
// Some other code below...

Наконец, вы также можете объявить это в своем XML-макете и надуть его (как показано выше) - просто убедитесь, что вы используете <package_name>.CustomVideoView. Пример:

<mh.so.CustomVideoView android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:id="@+id/custom_videoview" />
11
задан Eddie 4 June 2009 в 15:50
поделиться

3 ответа

См. Сообщение Раймонда Чена по этой теме . Диспетчер окон устанавливает ограничение в 10 КБ на процесс, а общий лимит в системе составляет 32 КБ. Так что, если он «только» пропускает 100 дескрипторов в час, то у вас есть несколько дней безотказной работы, прежде чем он начнет работать некорректно.

Обратите внимание, что не все дескрипторы одинаковы. Например, оконные дескрипторы не являются дескрипторами БД и могут подчиняться другим правилам. Таким образом, это ограничение может не применяться, в зависимости от того, какие дескрипторы пропускает программа. Также прочтите это сообщение в блоге.

17
ответ дан 3 December 2019 в 03:19
поделиться

Куча рабочего стола , представляющая собой пул памяти, в котором реальный «материал» дескриптора представляет жизни. Иногда дело не столько в количестве выделенных вами дескрипторов, сколько в том, сколько памяти использует каждый объект под этим дескриптором. Вы можете отладить кучу таким образом . Это установка.

(это было переработано из другого моего ответа)

5
ответ дан 3 December 2019 в 03:19
поделиться

Согласно это , 10000.

2
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: