通过在创建 activity 后加载 URI 来提高性能
Improving performance by loading URI after activity is created
我有一个带有 activity 的应用程序可能会或可能不会加载流式 MP3。我正在使用出色的 AudioWife 库来执行此操作。但是,当 activity 打开时,这会导致非常明显的延迟。这在较慢的设备或连接上非常烦人(屏幕有时甚至会变黑几秒钟)。当没有流式 mp3 时,不会发生延迟。延迟不是由 AudioWife 引起的,因为我之前使用的代码导致了相同的延迟。
问题显然是我正在加载一个 URI onCreate()
,所以 activity 一直等到它检索到诸如长度之类的元信息。
这是我的部分onCreate()
if (showMusic){
LinearLayout musicContainer = (LinearLayout) findViewById(R.id.MusicContainer);
musicContainer.setVisibility(View.VISIBLE);
Uri uri = Uri.parse(mixLink);
AudioWife.getInstance().init(getApplicationContext(), uri)
.useDefaultUi(musicContainer , getLayoutInflater());
[...]
}
我希望在创建 activity 之后开始繁重的工作(加载 mp3),以防止 activity 冻结。
我已经尝试将上面的代码放入 ASyncTask 中,但无济于事,因为导致问题的行 (init()
) 需要在图形线程上 运行。如果我将部分代码放在 doInBackground()
中,应用程序就会崩溃。如果我将那部分代码放入 onPostExecute()
应用程序不会崩溃,但延迟仍然存在。
提前致谢。
假设您在 onCreate()
开始 AsyncTask
,您仍然会看到延迟,因为 onPostExecute()
中的任务执行的操作将在 UI 线程,这意味着它将与 UI 东西并发。
说到这里,我建议您简单地以任意初始延迟启动 AsyncTask
。
我有一个带有 activity 的应用程序可能会或可能不会加载流式 MP3。我正在使用出色的 AudioWife 库来执行此操作。但是,当 activity 打开时,这会导致非常明显的延迟。这在较慢的设备或连接上非常烦人(屏幕有时甚至会变黑几秒钟)。当没有流式 mp3 时,不会发生延迟。延迟不是由 AudioWife 引起的,因为我之前使用的代码导致了相同的延迟。
问题显然是我正在加载一个 URI onCreate()
,所以 activity 一直等到它检索到诸如长度之类的元信息。
这是我的部分onCreate()
if (showMusic){
LinearLayout musicContainer = (LinearLayout) findViewById(R.id.MusicContainer);
musicContainer.setVisibility(View.VISIBLE);
Uri uri = Uri.parse(mixLink);
AudioWife.getInstance().init(getApplicationContext(), uri)
.useDefaultUi(musicContainer , getLayoutInflater());
[...]
}
我希望在创建 activity 之后开始繁重的工作(加载 mp3),以防止 activity 冻结。
我已经尝试将上面的代码放入 ASyncTask 中,但无济于事,因为导致问题的行 (init()
) 需要在图形线程上 运行。如果我将部分代码放在 doInBackground()
中,应用程序就会崩溃。如果我将那部分代码放入 onPostExecute()
应用程序不会崩溃,但延迟仍然存在。
提前致谢。
假设您在 onCreate()
开始 AsyncTask
,您仍然会看到延迟,因为 onPostExecute()
中的任务执行的操作将在 UI 线程,这意味着它将与 UI 东西并发。
说到这里,我建议您简单地以任意初始延迟启动 AsyncTask
。