gpt4 book ai didi

java - 如何将我的代码变成异步任务?

转载 作者:行者123 更新时间:2023-12-02 05:18:34 24 4
gpt4 key购买 nike

我正在尝试创建一个按钮,单击后即可转到另一个 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 时,会发生很多事情:

  • 新 Activity :构造函数 -> onCreate -> onStart -> onResume
  • 旧 Activity :OnPause ->(可能)onStop ->(可能)onDestroy
  • 更糟糕的是,垃圾收集器经常在这些步骤之间的任何时间发挥作用,当这种情况发生时,用户界面实际上会停止一段时间。您可以在 logcat 中看到类似 “GC,释放 xxxxKb,停止 100 毫秒

所有这一切都按顺序发生并且速度非常快。 Choreographer 是主要的 android 循环,它告诉您在此过程中的某个地方它已被堵塞并丢失了一些帧。

这也可能取决于手机/平板电脑硬件:旧硬件在停止/开始 Activity 时很容易被淹没。如果您可以控制新 Activity ,只需确保它的初始化负担不会太大。

关于java - 如何将我的代码变成异步任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26696277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com