android線程activity
A. android:線程跳轉到另一個activity時,新activity不能創建線程
這個問題只需要了解Activity的啟動模擬即可。
Activity啟動模式有4種,分別為standard、singleTop、singleTask、singleInstance。
1.standard 默認模式,可以不用寫配置。在這個模式下,都會默認創建一個新的實例。因此,在這種模式下,可以有多個相同的實例,也允許多個相同Activity疊加。
2.singleTop 可以有多個實例,但是不允許多個相同Activity疊加。即,如果Activity在棧頂的時候,啟動相同的Activity,不會創建新的實例,而會調用其onNewIntent方法。
3.singleTask 只有一個實例。在同一個應用程序中啟動他的時候,若Activity不存在,則會在當前task創建一個新的實例,若存在,則會把task中在其之上的其它Activity destory掉並調用它的onNewIntent方法。
3.singleInstance只有一個實例,並且這個實例獨立運行在一個task中,這個task只有這個實例,不允許有別的Activity存在。
B. Android: 一個Activity開辟的線程,在這個Activity調用finish()的時候會強制關閉這個線程嗎
不會,你可以在onDestory中手動終止該線程
C. Android中是不是新開一個activity就是新建了一個線程
不是的,Android中所有的Activity都是在一個線程中,也就是我們所說的主線程(UI線程)。另外Activity 和 線程本身是兩個跨度很大的概念。
D. android:當Activity和Service 都被銷毀後,如何控制其中生成的線程
1.首先
android
一個程序中
的activity
都是一個線程,service和activity也是一個線程
2.在activity
中啟動一個子線程,當前activity
finish
destroy掉
子線也會運行的。
3.在service里的線程
與activity很類似
service即使停止了
線程也在運行(要先停止服務
再把最近使用的進程殺掉
線程會停止
,如果直接殺掉進程
android會再次自動啟動這個service的
此時即使再停止service服務
線程也會一直運行了除非關機)
activity
finish
子線程依舊可以運行,即使程序退出了子線程也在運行
(除非在任務管理器里
把最近使用的進程殺掉)
4.JVM有很好的管理機制,系統最後會自動釋放回收。作為手動回收來說,你可以調用interrupt
E. 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 }
F. android activity子線程和主線程的區別
絕大部分情況下,UI操作的事情只能在主線程進行,所以主線程又被成為UI線程。但是有些比較耗費時間的操作如果放在主線程處理的話,會造成主線程阻塞,主線程阻塞了,手機就會卡頓。所以耗時的操作就應該放到子線程去處理。主線程要一直處於空閑的狀態。
G. android線程里怎麼啟動一個ACTIVITY
重寫onPostExecute方法,並在這里啟動