Android 线程开发笔记 2 Looper

    xiaoxiao2021-03-25  45

    import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private EditText editText; private ProgressBar progressBar; private MyThread myThread; private Handler uiHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0x321) { progressBar.setVisibility(View.GONE); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.et); progressBar = (ProgressBar) findViewById(R.id.pb); myThread = new MyThread(); myThread.start(); } public void count(View view) { progressBar.setVisibility(View.VISIBLE); int num = Integer.parseInt(editText.getText().toString()); Message message = Message.obtain(); message.what = 0x123; message.arg1 = num; //通过myThread.handler.sendMessage发送消息给内部类MyThread myThread.handler.sendMessage(message); } class MyThread extends Thread { public Handler handler; @Override public void run() { Looper.prepare(); handler = new Handler(Looper.myLooper()) { @Override public void handleMessage(Message msg) { if (msg.what == 0x123) { int num = msg.arg1; List<Integer> list = new ArrayList<>(); for (int i = 0; i <= num; i++) { if (i % 2 == 0) { list.add(i); } } Toast.makeText(MainActivity.this, list.toString(), Toast.LENGTH_SHORT).show(); uiHandler.sendEmptyMessage(0x321); } } }; Looper.loop(); } } }
    转载请注明原文地址: https://ju.6miu.com/read-34617.html

    最新回复(0)