我有一个服务,每0.1秒发送一个意图给我的活动.我用它来更新计时器的自定义实现.这里一切正常问题出现在我要更新14 TextView我在我的活动中的片段中的TableView中.这里的应用程序非常慢
我的活动中从服务中收到意向的方法:
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context,Intent intent) { long milis = intent.getLongExtra("milis",0); if( mFragment != null) mFragment.Update(milis); } };
Fragment中的代码,我更新了TextViews:
public void actualizarTiempoJuego(long milis){ // Se recuperan los tiempos acumulados y se aumenta la cantidad pasada como parámetro for(int i=0;i<7;++i) { long mCurrentMilis1 = mVectorMilis1.get(i); long mCurrentMilis2 = mVectorMilis2.get(i); TextView1 t1 = mListaTitularLayoutLocal.get(i); TextView1 t2 = mListaTitularLayoutVisitante.get(i); t1.setText(String.value(milis + mCurrentMilis1)); t2.setText(String.value(milis + mCurrentMilis2)); } }
我做错事了,还是只是想在效率上做一些非常复杂的事情呢?
解决方法
@Sherif对隐藏的Alpha值提出了一个很好的观点,这些值使您的应用程序陷入困境.
根据您的平台,您可能还需要检查
根据您的平台,您可能还需要检查
<application android:hardwareAccelerated="true"... />
另外你可以研究一下,这可能有助于表现不会触发所有这些意图.一旦你开始触发意图,你正在得到系统涉及,取决于他们如何解决它可能需要一些额外的时间.
对于这个问题,我喜欢使用Handlers.它们比意图重量更轻.
你可能还想看看AsyncTask.这基本上就像一个线程,但是也提供了在UI线程上运行的钩子,所以你可以执行后台操作和更新UI,而不必发布runnable.
编辑:最后,您可以随时通过layoutopt工具运行您的布局.罗曼·本人亲自告诉我,如果你的绘画太慢,比你需要少一些.只需从分析工具中查看截图(来自不太理想的视图树,但在最大值范围内).您可以看到绘图占用的资源数量.如果您希望您的应用程序做出反应,这样做非常重要.
编辑:不再称为layoutopt,它叫做lint.检查你的〜/ android-sdk / tools /