當前位置:編程學習大全網 - 編程語言 - android 編程中怎麽關閉activity線程

android 編程中怎麽關閉activity線程

在Activity開啟的子線程並不會自動隨Activity的destroy而關閉,所以必須手動去關閉子線程或者通過boolean的方式讓子線程結束運行。開啟的子線程有for循環的要更加註意。

1 package com.lsw;

2

3 import android.app.Activity;

4 import android.os.Bundle;

5 import android.os.Handler;

6 import android.os.Message;

7 import android.util.Log;

8 public class ThreadDemoActivity extends Activity {

9 private static final String TAG = "ThreadDemo";

10 private int count = 0;

11 private Handler mHandler = new MyHandler();

12 boolean stopThread=false;

13

14 private Runnable mRunnable = new Runnable() {

15

16 public void run() {

17

18 while (!stopThread)

19 {

20 count++;

21 try

22 {

23 Thread.sleep(2000);

24 }

25 catch (InterruptedException e)

26 {

27 // TODO Auto-generated catch block

28 e.printStackTrace();

29 }

30

31 //雖然Message的構造函數是public的,但是最好是使用Message.obtain( )或Handler.obtainMessage( )函數來獲取Message對象,因為Message的實現中包含了回收再利用的機制,可以提供效率。

32 Message message=mHandler.obtainMessage();

33 message.what=0;

34 message.obj=count;

35 mHandler.sendMessage(message);

36 }

37 }

38 };

39

40 @Override

41 public void onCreate(Bundle savedInstanceState) {

42 super.onCreate(savedInstanceState);

43 setContentView(R.layout.main);

44 //開啟子線程

45 new Thread(mRunnable).start();

46 }

47

48 protected void onDestroy() {

49 System.out.println("-----------onDestroy------");

50 stopThread=true;

51 super.onDestroy();

52 };

53

54 class MyHandler extends Handler{

55

56 @Override

57 public void handleMessage(Message msg)

58 {

59 // TODO Auto-generated method stub

60 Log.e(TAG, Thread.currentThread().getName() + " " +msg.obj);

61 setTitle("" +msg.obj);

62 }

63 }

64

65 }

  • 上一篇:六、HBase寫入流程
  • 下一篇:我朋友向學電腦編程,但是學費對於他來說實在是太貴了,該怎麽辦?急~~!!!
  • copyright 2024編程學習大全網