ant*_*afe 7 android android-activity
我想打开一个新的Activity:
Intent intent = new Intent(homeScreen.this, EmployeeService.class);
Bundle b = new Bundle();
b.putInt(Constants.SERVICE_DETAIL_L1_ID_MSG, ServiceIndex.SRV_L1_EMPLOYMENT);
b.putInt(Constants.SERVICE_DETAIL_FOCUS_POS_MSG, 2);
intent.putExtras(b);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但是,目标Activity(EmployeeService)变得可见需要很长时间.从Logcat,我看到:
05-14 23:43:31.727: INFO/ActivityManager(59): Displayed activity fr.playsoft.happylille/.employee.EmployeeService: 7050 ms (total 7050 ms)
Run Code Online (Sandbox Code Playgroud)
我不敢相信仅仅打开一个新的活动需要7秒多.我在onCreate()中添加了一个日志,但是看到它只需要5ms来完成onCreate.
谁能告诉我如何找到这个问题的根源?
您应该将代码移至Html.fromHtml(desc);线程以使其异步。onCreate()该线程可以在新打开的期间安全地启动Activity。
在该线程的末尾,您可以tvDesc.setText()从 UI 线程运行:
class ExampleThread extends Thread {
@Override
public void run() {
final Spanned spannedText = Html.fromHtml(desc);
yourNewlyOpenedActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
tvDesc.setText(spannedText);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
更一般地说,一台设备上的 7 秒可能意味着另一台设备上的 20 秒,所以要小心 ANR!
(对下面Boy的评论进行了进一步编辑,该答案的前版本不再准确/有效)
| 归档时间: |
|
| 查看次数: |
17166 次 |
| 最近记录: |