微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 多个TextViews更新很慢

我有一个服务,每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 /

原文地址:https://www.jb51.cc/android/313091.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐