Деятельность не начинается и не открывается на черном экране - PullRequest
0 голосов
/ 19 апреля 2020

Деятельность A запускает Намерение для Действия B, которое является селектором видео.

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 20);

В onActivityResult мы запускаем другое действие C, пропуская выбранный путь к видео

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            if (requestCode == 20) {
                Uri selectedVideoUri = data.getData();
                String absPath = getRealPathFromURI(selectedVideoUri);
                Intent i = new Intent(getApplicationContext(), CuttingActivity.class);
                i.setData(Uri.fromFile(new File(absPath)));
                startActivity(i);
            }
        }
    }

Во время Использование, Действие А успешно открывает Действие B. Когда вы нажимаете на видео, приложение останавливается, а через пару секунд открывается черный экран. Метод onCreate для Activity C никогда не вызывается. Я думал, что действие A блокирует запуск действия C, поэтому я вызвал fini sh () примерно так:

startActivity(i);
finish();

Это решило мою проблему, но я больше не мог go вернуться к действию А так как его больше не существует, и мне нужно это сделать.

Кроме того, в другой области действие А напрямую открывает действие C, это работает, как и ожидалось, без черных экранов.

PS Активность A показывает канал с камеры. Возможно, поток пользовательского интерфейса слишком занят?

Активность A

           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>

1 Ответ

0 голосов
/ 20 апреля 2020

Этот вопрос частично решен, обходной путь должен был создать запуск намерения для действия C после задержки, чтобы позволить действию A время возобновиться. Это может быть сделано через обработчик или ASyncTask. При попытке возобновить действие A и одновременно запустить действие C что-то происходит, что неизвестно.

...