每次我在导航抽屉中选择consultation_fragment时,它会滞后几秒钟,然后再次响应。
这是我的代码
private Handler aHandler = new Handler();
View rootView;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
LayoutInflater lf = getActivity().getLayoutInflater();
rootView = lf.inflate(R.layout.consultation_fragment, container, false);
aHandler.postDelayed(r, 0);
return rootView;
}
public void sTest()
{
viewDeclaration();
visitorInfo();
chat = ZopimChatApi.start(getActivity());
Log.d("ChatHasEnded: ", String.valueOf(chat.hasEnded()));
accountObserver = new AccountObserver()
{
@Override
public void update(final Account account)
{
final Account.Status status = account.getStatus();
if (status != null)
if(getActivity() != null)
{
getActivity().runOnUiThread(new Runnable()
{
@Override
public void run()
{
switch (status)
{
case ONLINE:
mStatus.setText("Therapist is Online");
mConsultation.setEnabled(true);
ivStatus.setImageResource(R.drawable.online);
break;
case UNKNOWN:
case OFFLINE:
mStatus.setText("Therapist is Offline");
mConsultation.setEnabled(false);
ivStatus.setImageResource(R.drawable.offline);
break;
}
}
});
}
}
};
// listen for account events
ZopimChatApi.getDataSource().addAccountObserver(accountObserver);
}
final Runnable r = new Runnable()
{
@Override
public void run()
{
sTest();
}
};
如果我检查logcat它显示此错误
我/编舞:跳过132帧!该应用程序可能在其主线程上做过多的工作。
I /编舞:跳过131帧!该应用程序可能在其主线程上做过多的工作。
I /编舞:跳过131帧!该应用程序可能在其主线程上做过多的工作。
我/编舞:跳过132帧!该应用程序可能在其主线程上做过多的工作。
I /编舞:跳过128帧!该应用程序可能在其主线程上做过多的工作。
我/编舞:跳过133帧!该应用程序可能在其主线程上做过多的工作。
I /编舞:跳过130帧!该应用程序可能在其主线程上做过多的工作。
我/编舞:跳过133帧!该应用程序可能在其主线程上做过多的工作。
更新:
罪魁祸首是我ImageView图像资源的改变。有什么办法可以防止这种情况?我真的很想在runOnUiThread上加载图像资源而不会出现跳帧错误
答案 0 :(得分:1)
我刚发现可绘制图像中的一张具有2000x2000的分辨率,因此我尝试将其调整为25x25的大小,因为它永远不会落后。
答案 1 :(得分:-1)
您可以在这里看看:https://developer.android.com/guide/components/processes-and-threads我不是程序员,但我发现当程序/应用程序循环读取代码时会发生这种情况,如果我认为应该验证开关的情况问题是存在的,但使用null即可。这是同一问题的另一篇文章:https://es.stackoverflow.com/questions/67790/obtengo-el-mensaje-the-application-may-be-doing-too-much-work-on-its-main-thr