作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个按钮,单击后即可转到另一个 Activity FourthActivity
,但我的 Logcat 上不断收到以下错误:“Choreographer:跳过 121 帧!应用程序可能也在执行此操作主线程上还有很多工作。”我做了一些研究,发现使用 AsyncTask
可以摆脱它,但我不知道该怎么做。谁能帮我?谢谢!
下面是ThirdActivity.java
的代码:
package elena.crosscountry.app;
import android.app.Activity;
import android.widget.Button;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.content.Intent;
public class ThirdActivity extends Activity implements View.OnClickListener {
Button staart;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third);
staart = (Button) findViewById(R.id.staart);
staart.setOnClickListener(this);
}
private void staartClick(){
startActivity(new Intent(ThirdActivity.this, FourthActivity.class));
}
public void onClick(View view){
switch(view.getId()){
case R.id.staart:
staartClick();
break;
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.third, menu);
return true;
}
}
以下是activity_third.xml
的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ThirdActivity" >
<Button
android:id="@+id/staart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/start" />
</LinearLayout>
最佳答案
AsyncTask
是一个类,您可以使用它来进行冗长的后台计算,然后再传达结果,例如:
启动 Activity 不是使用 AsyncTask
执行的操作。如果您在启动某个 Activity 时收到该消息,则可能是其构造函数中的新 Activity、onCreate 和 onStart 阻塞了 UI。请注意,当您开始一项 Activity 时,会发生很多事情:
构造函数
-> onCreate
-> onStart
-> onResume
OnPause
->(可能)onStop
->(可能)onDestroy
所有这一切都按顺序发生并且速度非常快。 Choreographer 是主要的 android 循环,它告诉您在此过程中的某个地方它已被堵塞并丢失了一些帧。
这也可能取决于手机/平板电脑硬件:旧硬件在停止/开始 Activity 时很容易被淹没。如果您可以控制新 Activity ,只需确保它的初始化负担不会太大。
关于java - 如何将我的代码变成异步任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26696277/
我是一名优秀的程序员,十分优秀!