据我所知,在android中,当我们运行进程时,它们始于Main线程。当我们做一些繁重的工作时,我们使用了一个新线程。如果我们想修改UI外观,可以使用在UI上运行。
有人可以向我解释这些线程的作用以及如何使用它们吗?
UI线程和主线程只是同一线程的不同名称。
应用程序的所有UI膨胀都在此主线程上完成。之所以将“较重”的工作委派给其他线程,是因为我们不希望这些操作减慢UI的响应性和膨胀时间。
您将要运行任何更改UI或修改UI在主线程上使用的对象的操作。
一个带有AsyncTask的例子
package com.wolfdev.warriormail;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
public class LoginActivity extends Activity implements OnClickListener{
private Button loginButton;
private EditText eText;
private EditText pText;
private CheckBox box;
private String user;
private String pass;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
//Initialize UI objects on main thread
loginButton = (Button) findViewById(R.id.button1);
loginButton.setOnClickListener(this);
eText = (EditText) findViewById(R.id.editText1);
pText = (EditText) findViewById(R.id.editText2);
eText.clearFocus();
pText.clearFocus();
Animation fadeIn = AnimationUtils.loadAnimation(this,R.anim.fadeanimation);
Animation slideIn = AnimationUtils.loadAnimation(this, R.anim.slideanimation);
eText.startAnimation(slideIn);
pText.startAnimation(slideIn);
box = (CheckBox)findViewById(R.id.checkBox1);
box.startAnimation(fadeIn);
login.startAnimation(fadeIn);
}
@Override
public void onClick(View v) {
user = email.getText().toString();
password = pass.getText().toString();
}
class LoginTask extends AsyncTask<Void,Void,Void>{
@Override
protected Void doInBackground(Void... args){
/* Here is where you would do a heavy operation
* In this case, I want to validate a users
* credentials. If I would do this on the main
* thread, it would freeze the UI. Also since
* this is networking, I am forced to do this on
* a different thread.
*/
return null;
}
@Override
protected void onPostExecute(Void result){
/* This function actually runs on the main
* thread, so here I notify the user if the
* login was successful or if it failed. If
* you want update the UI while in the background
* or from another thread completely, you need to
* use a handler.
*/
}
}
}
问题内容: 我刚刚开始进行android开发,并且更新UI确实使我很烦:/ 到目前为止,这是我一直在努力的工作- 它工作正常,但是每个人都说要在主线程中做图形,所以我正在尝试(但失败)将其传递给另一个线程。麻烦的是,我真的不知道怎么做,因为我从未真正使用过线程。 Google给出的有关使用Threads的示例似乎并不十分清楚,我也无法真正按照自己的意愿去做。我可以请某人在这里给我一个最基本的例子,
本文向大家介绍详解Android中OkHttp3的例子和在子线程更新UI线程的方法,包括了详解Android中OkHttp3的例子和在子线程更新UI线程的方法的使用技巧和注意事项,需要的朋友参考一下 okHttp用于android的http请求。据说很厉害,我们来一起尝尝鲜。但是使用okHttp也会有一些小坑,后面会讲到如何掉进坑里并爬出来。 首先需要了解一点,这里说的UI线程和主线程是一回事儿。
在UI线程中运行代码的观点中,以下两者之间有什么区别吗: 或 而且
我正在编写一个Android应用程序,它连接到蓝牙设备,读取设备发送的数据,将其添加到AChartEngine图形中,并在文本视图中显示数据。 我的Bluetooth代码与BluetoothChat示例代码中的线程实现非常相似(它与SDK一起提供)。我可以在LogCat中看到< code>ConnectedThread循环正在执行并因此获得新数据,但我的TextView在7行之后停止更新,图形间歇
虽然这个问题似乎已经被问了很多次,而且我已经得到了很高的答案,但我想指出,多个答案是相互冲突的,而且我永远无法完全理解异步代码的内部结构。我完全理解它的意思是继续顺序代码执行并在以后完成任务,我正在努力理解后面的部分。 答案1-建议UI/Main 首先,这个问题包含了下面的测试,建议异步代码运行在main/UI线程上,并链接了一篇文章,解释为什么异步代码没有其他线程。 问:“在我看来,由于我主要做
我有一个ScheduleTimer类,它可以处理日期数组。这是: 如果我像Java应用程序一样运行它,而不是像android一样运行,并且它在控制台中每隔一秒打印一次,那么它就可以正常工作。但是当在android环境中运行它时,它要么说UI线程不能从任何其他线程接触,要么它在类ScheduleTimer的方法中给了我null点异常。 我这样使用它: