`
qinya06
  • 浏览: 595305 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

android 线程 销毁 问题

 
阅读更多
最近在做一个android上的游戏,用到了多个线程,当一切准备基本完成时出现了一个小问题,选择退出时finish掉了一个Activity但是里面的线程却没办法结束掉,因此就算退出了游戏等到线程结束时该执行的页面还是会跳出一个Activity,原来finish一个Activity并不能结束掉一个线程,于是我又尝试thread.stop()方法,还是没有效果,thread.distroy()方法总会显示出错,这些给我造成了一个很大的困惑,不知道哪位大神可以帮我解释一下,最后经过查找资料找到了解决办法,那就是定义一个boolean型的cancle变量,当cancle变量为true时在线程中return一下就好使了,
下面是一个小例子
    private void init_main_thread()  
       {  
        main_thread = new Thread(new Runnable() {  
            /** 
             * @author zhangxiaomin 
             * 主要功能:游戏计时线程,设定开启矿脉的事件,增加player矿产数量,线程结束后实现页面跳转 
             */  
            public void run() {  
                System.out.println(time);  
                while (time > 0) {  
                    // System.out.println(time);  
                    try {  
                        this.sleep(1000);  
                        mHandler.post(new Runnable() {  
                            public void run() {  
                                handlerRun();  
                            }  
                        });  
                        time--;  
                        System.out.println(time+"");  
                        if (time <= 0) {  
                            setPlayerScore();  
                            Intent intent = new Intent();  
                            intent.setClass(MapActivity.this,  
                                    RateActivity.class);  
                            finish();  
                            startActivity(intent);  
                        }  
                        if(cancle)  
                        {  
                            return;  
                        }  
                    } catch (InterruptedException e) {  
                        // TODO Auto-generated catch block  
                        e.printStackTrace();  
                    }  
                }  
      
            }  
      
            private void sleep(int i) throws InterruptedException {  
                Thread.sleep(i);  
            }  
        });  
       }  
分享到:
评论

相关推荐

    Android线程的销毁

    在Android开发中,经常会用到线程和Timer,如果没有主动关闭它们,当程序结束时,线程并没有被销毁,而是一直在后台运行着,当我们重新启动应用时,又会重新启动一个线程,周而复始,你启动应用次数越多,开启的线程...

    Android线程结束——合理的结束你想结束的线程

    总结,结束Android线程时,关键在于优雅、安全地中断操作,而不是简单粗暴地停止。合理的线程管理可以提升用户体验,避免ANR,并保持应用程序的稳定运行。正确使用Thread、AsyncTask、Handler和Looper等工具,结合...

    Android多线程文件上传

    3. ExecutorService:Java提供的线程池服务,可以创建固定数量的线程,适合处理并发上传任务,避免了频繁创建销毁线程的开销。 4. OkHttp库:OkHttp是一个高效的HTTP客户端,支持自定义拦截器,可以方便地实现多线程...

    Android线程问题.rar

    这个"Android线程问题.rar"压缩包可能包含了关于Android多线程的一些深入问题和实践案例,帮助开发者提升这方面的专业能力。 在Android系统中,主线程(也称为UI线程)负责处理用户交互事件,如触摸屏幕、显示通知...

    android 线程详解 各种经典 完整代码

    本文将深入探讨Android线程的概念、类型以及如何有效地利用线程进行编程,包括各种经典用法,并提供完整的代码示例。 一、Android线程基础 在Android系统中,主线程也称为UI线程,负责处理用户界面的所有交互。由于...

    android多线程demo(很清晰很详细)

    - **使用Executor服务**:更高级的方式,可以管理线程池,避免大量创建销毁线程的开销。 3. **AsyncTask**:Android提供的轻量级异步任务框架,包含`onPreExecute()`, `doInBackground()`, `onProgressUpdate()`, ...

    Android多线程操作

    因此,我们需要在Android中创建和管理多线程来解决这个问题。 一、线程类型 1. **标准Java线程**:可以使用`java.lang.Thread`类直接创建线程,通过重写`run()`方法实现线程任务。 2. **Handler/Looper/Message机制...

    activity生命周期、线程优先级、异常销毁、任务栈

    在开发过程中,理解并熟练掌握Activity的生命周期、线程优先级、异常销毁以及任务栈原理,可以帮助我们编写出更加稳定、高效且用户体验良好的Android应用。在ActivityLifecycle这个项目中,开发者可以通过参考代码来...

    Android 线程 多线程 Multi-thread

    本篇文章将详细介绍Android线程的基础知识、使用方法及同步机制等内容。 #### 一、Android线程概述 在Android应用开发过程中,线程的应用非常广泛。线程作为进程中的执行单元,可以被用来处理一些耗时操作,如网络...

    Java/Android关于线程使用的总结

    ### Java/Android线程使用深度解析 在计算机科学领域,线程与进程是核心概念,尤其是在多任务操作系统中。本文将深入探讨Java/Android环境下的线程管理,包括线程的创建、线程池的利用及`ThreadHandler`的运用等...

    Android多线程下载

    线程池可以控制并发线程的数量,避免大量创建和销毁线程带来的性能开销,同时提供任务调度和优先级管理。 3. **下载任务分解**:根据文件大小,将其划分为若干块,每块作为一个下载任务分配给线程。块大小的选择需...

    Android实现多线程下载

    线程池可以避免频繁创建和销毁线程的开销,提高性能。通过`Executors`类提供的静态方法,如`newFixedThreadPool`,可以创建一个固定大小的线程池,用于执行多线程任务。 2. **异步任务和AsyncTask**: Android提供...

    Android线程间 massage 机制

    因此,理解并掌握Android线程间的通信机制,尤其是message(消息)机制,对于优化应用性能至关重要。 Android线程间通信的主要方式有:Handler、Looper、Message以及BroadcastReceiver等。其中,Handler-Looper-...

    android studio多线程下载

    - AsyncTask:更适合轻量级的异步操作,它简化了线程管理和回调,但不适用于大量或长期运行的任务,因为它会随着Activity的销毁而被回收。 2. **下载逻辑**: - 分块下载:将大文件分成多个小块,每个线程负责...

    Android多线程PPT教学课件.pptx

    为了解决这个问题,开发者需要学会使用多线程。\n\n1. **Intent理解**\nIntent是Android中用于组件间通信的重要工具,它可以描述一个动作、接收者和传递的数据。Intent分为显式启动和隐式启动两种方式。显式启动明确...

    Android多线程详解与Demo

    5. **ThreadPoolExecutor**:Android虽然不直接支持,但可以通过引入Java并发库来实现线程池,它可以帮助优化线程资源,减少线程创建和销毁的开销,适用于大量并发任务。 6. **RxJava/RxAndroid**:这是一种基于...

    android 多线程下载demo

    在Android开发中,多线程下载是提升用户体验的重要技术,特别是在下载大文件如APK时。这个"android多线程下载demo"展示了如何利用多线程分段下载一个APK文件,同时实现实时更新UI展示下载进度,并在下载完成后自动...

    [毕设季 android开发]第六讲:Android线程及UI更新

    本讲将深入探讨Android线程的使用,特别是如何利用Handler来实现在主线程中更新UI。Handler是Android中的一个消息处理机制,它与Looper和Message紧密配合,用于在不同的线程间传递消息并执行相应的回调方法。 1. **...

    android SurfaceView添加线程源码

    在Android开发中,`SurfaceView`是一个非常重要的视图组件,尤其在处理高性能图形和视频渲染时。`SurfaceView`提供了直接与硬件图形管道交互的能力,使得开发者可以在单独的线程中进行绘制,从而避免阻塞UI主线程,...

    Android 线程和线程池核心技术-走进线程世界 (一)

    在多线程环境中,线程同步和通信是必须面对的问题。Java提供了多种机制,如synchronized关键字、wait()和notify()方法、Volatile关键字以及CountDownLatch、Semaphore等并发工具类,来保证线程安全和数据一致性。 ...

Global site tag (gtag.js) - Google Analytics