java - 如何在不卡住我的应用程序的情况下运行循环?

标签 java android multithreading for-loop

循环卡住了我的应用程序,但完成后,应用程序正常工作。我尝试在 Thread 中运行循环,它运行得很好,没有卡住应用程序。但现在的问题是,如果应用程序崩溃,我无法再次运行相同的循环,因为我们无法重新启动Thread。我想以一种不会卡住应用程序并且可以再次运行的方式运行循环。我该怎么做?

我的MainActivity类中的代码:

protected Thread sendthread;

@Override
protected void onCreate(Bundle savedInstanceState) {

 sendthread = new Thread(new Runnable () {

    @Override
    public void run() {

  for(int i=0;i<amount;i++){

            if  (status == 0){

                break;  

            }

             SmsManager sms = SmsManager.getDefault();
      sms.sendTextMessage(phoneNumber.getText().toString(),null,messagetoSend, null, null);

    }

    }
});


}

Thread按钮启动

start.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

        status = 1;
        sendthread.start();

}

我通过将 status 设置为 0 来停止线程

最佳答案

尝试使用AsyncTask。在onPreExecute函数中启动进度条,并在onPostExecute中调用cancel。在doInBackground中你可以调用sleep。这不会使您的应用程序崩溃,您也不会感觉应用程序没有响应。

关于java - 如何在不卡住我的应用程序的情况下运行循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36332365/

相关文章:

比较树的子树的Java算法

java - XMLBeans - 如何处理几乎相同的遗留 XSD?

java - okhttp 不允许设置 content-type

android - 排除特定版本的 jar 或模块文件?

java - 未处理的异常 org.json.jsonexception

java - 线程卡在应用程序中

java - 如何保证一个线程在另一个CORE中执行?

Java - 字母替换不起作用

android - 使用参数启动 Dynamics CRM for Phone

java - java原始整数是设计的还是偶然的?