我正在尝试创建一个按钮,一旦点击就转到另一个活动FourthActivity
,但我一直在我的Logcat上收到以下错误:“编舞:跳过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>
答案 0 :(得分:2)
AsyncTask
是一个类,您可以使用它来进行冗长的背景计算,然后将结果传达给您,例如:
使用AsyncTask
启动活动不是您要做的事情。如果您在启动活动时收到该消息,则可能是其构造函数中的新活动,onCreate和onStart是阻塞UI的活动。请注意,当您开始活动时,会发生很多事情:
Constructor
- &gt; onCreate
- &gt; onStart
- &gt; onResume
OnPause
- &gt; (也许)onStop
- &gt; (也许)onDestroy
所有这些都是顺序且非常快地发生的。 Choreographer
是主要的android循环,它告诉你它在这个过程中被堵塞并丢失了一些帧。
这还取决于手机/平板电脑硬件:旧硬件在停止/启动活动时很容易被淹没。如果您可以控制新活动,只需确保它在初始化时不会太重。