开发者

thread not running in background

开发者 https://www.devze.com 2023-03-24 11:03 出处:网络
i am calling this function from the menu and calls the upload(item) function to pass the index of the selected priority.

i am calling this function from the menu and calls the upload(item) function to pass the index of the selected priority.

public void showPriorityDialog()
{
    final CharSequence[] priority = {"1 Hour", "12 Hours", "24 Hours", "Cancel"};

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Select Priority");
    builder.setItems(priority, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            if(item != 3)
                upload(item);
        }
    });
    AlertDialog alert = builder.create();
    alert.show();
}

however, whenever i call the upload function,开发者_如何学Python the thread doesn't run in background, and the OS thinks that the app is not responding due to executing timeout.

public void upload(int priority)
{    
        final int _priority = priority;
        uploadThread = new Thread()
        {
            @Override
            public void run()
            {
                try
                {
                    super.run();                    

                    mHandler.post(new Runnable() {

                        @Override
                        public void run() {
                            try
                            {
                                //ftp commands...
                            }
                            catch (Exception e)
                            {
                                Toast.makeText(getApplicationContext(), e.toString() , Toast.LENGTH_SHORT).show();
                            }


                        }
                    });

                }
                catch (Exception e)
                {
                    Toast.makeText(getApplicationContext(), e.toString() , Toast.LENGTH_SHORT).show();
                }
            }                   
        };
        uploadThread.start();

}

am i doing something wrong? TIA


When you do mHandler.post(), your entire Runnable executes on UI thread and your background thread just exits. To fix, do FTP before posting to handler. Then do mHandler.post() to have Toast appear. Note that you catch also need to display Toast via post.

0

精彩评论

暂无评论...
验证码 换一张
取 消