Ссылка на активность Android обнуляется при нехватке памяти - PullRequest
0 голосов
/ 19 марта 2019

У меня есть действие, которое содержит фрагмент, и этот фрагмент воспроизводит видео на YouTube с помощью Android API YouTube, и я регистрирую прослушиватель событий для видео YouTube, когда он заканчивается. На событии onVideoEnded я получаю ссылку на действие, чтобы выполнить какое-то действие, и вот как я получаю действие внутри своего фрагмента:

private Activity theActivity;
@Override
    public void onAttach(Context context) {
        super.onAttach(context);
        theActivity = (Activity) context;
    }

    /*
     * Deprecated on API 23
     * Use onAttachToContext instead
     */
    @SuppressWarnings("deprecation")
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        if (Build.VERSION.SDK_INT < 23) {
            theActivity = activity;
        }
    }

    @Override
    public void onDetach() {
        super.onDetach();
        theActivity = null;
    }

protected Activity getTheActivity() {
        Activity activity = getActivity();
        if (activity != null)
            return activity;
        else return this.theActivity;
    }

Как вы можете видеть на моем методе getTheActivity, я сначала проверяю метод getActivity, и если он возвращает нулевое значение, я получаю переменную, полученную из onAttach при создании фрагмента. Однако на таких устройствах, как samsung getTheActivity, метод все равно возвращает ноль! Я думаю, что это, вероятно, проблема с нехваткой памяти! Как я могу получить ссылку на свою деятельность при любых обстоятельствах из моего фрагмента?

1 Ответ

0 голосов
/ 19 марта 2019

Добавьте эти две строки в файл манифеста в тег приложения

 android:hardwareAccelerated="false"
 android:largeHeap="true"
...