Write before Service (update ui in process)

Today's blog is from the second edition of Guo Shen's First Line of Code ...

Today's blog is from the second edition of Guo Shen's First Line of Code

Like many other GUI libraries, android's child threads are insecure, meaning that if you want to update UI elements in your application, you must be on the main thread
Otherwise, problems will occur
So we wrote a simple demo that would crash

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private TextView text; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text=(TextView)findViewById(R.id.text); Button changeText=(Button)findViewById(R.id.change_text); changeText.setOnClickListener(this ); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.change_text: new Thread(new Runnable() { @Override public void run() { text.setText("haha"); } }).start(); break; default: break; } } }

As a result, jump and see logcat is because the UI is updated in the child thread
In this case, Android provides a set of asynchronous demagnetization processing mechanism, which perfectly solves the problem
Modify the code, and you've almost solved the problem

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ private TextView text; public static final int UPDATE_TEXT=1; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case UPDATE_TEXT: text.setText("haha"); break; default: break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text=(TextView)findViewById(R.id.text); Button changeText=(Button)findViewById(R.id.change_text); changeText.setOnClickListener(this ); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.change_text: Message message=new Message(); message.what=UPDATE_TEXT; handler.sendMessage(message); break; default: break; } } }

Because this is written before Chapter Ten, let's review it together
Okay, get to the point

4 May 2020, 18:44 | Views: 5348

Add new comment

For adding a comment, please log in
or create account

0 comments