带线程的Android显示错误

时间:2012-02-03 04:48:40

标签: android thread-safety

在应用程序中,我在alerdialog点击监听器中调用了Thread。 它显示了Mobile Samsung pro中的错误“强制关闭应用程序”。 但是当我在另一个应用程序中执行相同的代码时,代码正常工作......

2 个答案:

答案 0 :(得分:2)

这可能是因为你在alerdialog点击监听器中做错了什么。做你做错的事情,它不会显示错误。

答案 1 :(得分:0)

在您的应用中执行以下程序帮助 Android还提供了一个名为AsyncTask的东西,它专门用于在一个单独的线程上运行一些东西,一些在UI线程上运行。这会自动使用Android的线程池,如果您没有任何理由使用显式的单独线程,那么这是一种简单,干净的方法:

 private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 
     // Runs on a ThreadPool thread 
     protected Long doInBackground(URL... urls) { 
         int count = urls.length; 
         long totalSize = 0; 
         for (int i = 0; i < count; i++) { 
             totalSize += Downloader.downloadFile(urls[i]); 
             // Sends data to onProgressUpdate to run on the UI thread 
             publishProgress((int) ((i / (float) count) * 100)); 
         } 
         return totalSize; 
     } 

     // Runs on the UI thread! 
     protected void onProgressUpdate(Integer... progress) { 
         setProgressPercent(progress[0]); 
     } 

     // Runs on the UI thread! 
     protected void onPostExecute(Long result) { 
         showDialog("Downloaded " + result + " bytes"); 
     } 
 }