Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何向android应用程序添加多线程或其他类似功能?_Java_Android_Multithreading_Performance - Fatal编程技术网

Java 如何向android应用程序添加多线程或其他类似功能?

Java 如何向android应用程序添加多线程或其他类似功能?,java,android,multithreading,performance,Java,Android,Multithreading,Performance,当我尝试将数据库文件发送到远程服务器时,我的android应用程序会冻结几秒钟,我是否可以使用多线程或其他类似功能将其设置为后台线程 这是出现询问我是否要发送的对话框的代码 public void showYesNoBox(){ DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { @Override public void onClick

当我尝试将数据库文件发送到远程服务器时,我的android应用程序会冻结几秒钟,我是否可以使用多线程或其他类似功能将其设置为后台线程

这是出现询问我是否要发送的对话框的代码

    public void showYesNoBox(){
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
        case DialogInterface.BUTTON_POSITIVE:
            //Yes button clicked
            SendData();
            finish();//go back to the previous Activity
        overridePendingTransition(R.anim.fadein, R.anim.fadeout);

            break;

        case DialogInterface.BUTTON_NEGATIVE:
            //No button clicked

            finish();//go back to the previous Activity
        overridePendingTransition(R.anim.fadein, R.anim.fadeout);
            break;
        }
    }
};

AlertDialog.Builder builder = new AlertDialog.Builder(this, AlertDialog.THEME_HOLO_DARK);
builder.setMessage("Do you want to send the data now?");
builder.setPositiveButton("Yes", dialogClickListener);
builder.setNegativeButton("No", dialogClickListener);
builder.show();
}
这是我点击“是”按钮时执行的代码


对此问题的任何帮助都将不胜感激,因为虽然该问题不会阻止用户发送其正在发送的数据,但当用户尝试执行该操作时,它会在一个屏幕上停留几秒钟。

虽然该问题不会阻止用户发送其正在发送的数据当它试图执行操作时,在一个屏幕上停留了几秒钟。


你可以看到。这是出于同样的目的。当您想要执行长时间运行的流程(包括访问服务器、处理数据库等)时,用户无需停留在UI上。这可以在后台使用
AsyncTask
完成。有很多很好的教程。只需谷歌一下。结帐和付款。希望这有帮助

我一直在使用asynctask来处理我想在后台执行的所有进程


异步任务中使用所有网络操作

就像下面的例子

 private class UploadTask extends AsyncTask<URL, Integer, Long> {
 protected Long doInBackground(URL... urls) {
     int count = urls.length;
     long totalSize = 0;
     // upload task 
     return totalSize;
 }

 protected void onProgressUpdate(Integer... progress) {
     setProgressPercent(progress[0]);
 }

 protected void onPostExecute(Long result) {
     showDialog("Downloaded " + result + " bytes");
 }
 }

打败我:)我会把什么放在上面写着URL的地方?私有类DownloadFilesTask扩展了AsyncTask{你可以根据你的要求选择
AsyncTask
的参数。它不必是
URL
。如果你先阅读它的文档页面或者做一些关于它的教程,这将对你很有帮助。post肯定会帮你澄清你的疑问。@marcus.ramsden这经常发生在我身上;)在多线程上检查这篇文章惯性导航与制导
 private class UploadTask extends AsyncTask<URL, Integer, Long> {
 protected Long doInBackground(URL... urls) {
     int count = urls.length;
     long totalSize = 0;
     // upload task 
     return totalSize;
 }

 protected void onProgressUpdate(Integer... progress) {
     setProgressPercent(progress[0]);
 }

 protected void onPostExecute(Long result) {
     showDialog("Downloaded " + result + " bytes");
 }
 }
 new UploadTask().execute(url1, url2, url3);