android調用activity
⑴ android 啟動 activity 是什麼意思
當應用運行起來後就會開啟一條線程,線程中會運行一個任務棧,當Activity實例創建後就會放入任務棧中。Activity啟動模式的設置在AndroidManifest.xml文件中,通過配置Activity的屬性android:launchMode=""設置。
1. Standard模式(默認)
我們平時直接創建的Activity都是這種模式的Activity,這種模式的Activity的特點是:只要你創建了Activity實例,一旦激活該Activity,則會向任務棧中加入新創建的實例,退出Activity則會在任務棧中銷毀該實例。
2. SingleTop模式
這種模式會考慮當前要激活的Activity實例在任務棧中是否正處於棧頂,如果處於棧頂則無需重新創建新的實例,會重用已存在的實例,否則會在任務棧中創建新的實例。
3. SingleTask模式
如果任務棧中存在該模式的Activity實例,則把棧中該實例以上的Activity實例全部移除,調用該實例的newInstance()方法重用該Activity,使該實例處於棧頂位置,否則就重新創建一個新的Activity實例。
4. SingleInstance模式
當該模式Activity實例在任務棧中創建後,只要該實例還在任務棧中,即只要激活的是該類型的Activity,都會通過調用實例的newInstance()方法重用該Activity,此時使用的都是同一個Activity實例,它都會處於任務棧的棧頂。此模式一般用於載入較慢的,比較耗性能且不需要每次都重新創建的Activity。
⑵ android activity怎麼調用自己得方法
想在一個Activity裡面調用另外一個Activity的方法主要有介面回調和靜態方法。但是除了靜態方法之外,並不推薦介面回調方法。
其中靜態方法實現參考如下表述:
需求:在A activity中調用 B activity的methodB()。
實現:使用靜態實現。
在B方法中定義:
1
public static void methodB(){}
在A中需要使用methodB()的地方這樣調用:
1
B.methodB();
為何不推薦在一個Activity中調用另一個Activity呢。因為Android系統運行內存較小,故其系統會在需要的時候將後台的進程自動清理掉以為當前進程提供運行內存。而android移動設備除了當前正在顯示的activity意外,其他的activity都在後台運行。例如你在A activity中調用B activity 的方法時候,有可能B activity已經被銷毀,所以,只能使用B activity的靜態方法。
最後的做法是將Activity界面顯示和邏輯分開寫在不同的類中,這樣才復合程序開發的MVC框架還有java編程的面向對象思想。
⑶ Android 中如何在java類中調用activity 中的一個方法,在線等,急、急、急
將你要使用的activity的實例當作參數傳入普通java類,這樣就可以調用,比如普通java類的構造函數,其中一個參數就是你需要的那個activity類型
在普通java類裡面使用activity實例調用你想調用的方法即可
⑷ android 調用其他activity方法
有很多種方法,有一種是繼承,那就可以直接調用父類方法了...
寫法:public class TitleActivity extends phActivity{
@Override
public void onClick(View v) {
super.onClick(v);
}
}
有一種是直接實例化,方法:Button p = (Button) findViewById(R.id.phone);
p.setOnClickListener(new phActivity());
⑸ android中一個應用程序如何調用到另一個另一程序的activity
生成一個要被調用的APK。在其Manifest.xml設置中,與一般的寫法大致相同,唯一區別的地方在於-->安裝這個要被調用的APK。安裝完畢之後,你會發現,系統中找不到這個程序。別急,它確實安裝在手機裡面了,但是因為他不是main的,所以系統不會把他當做Application的入口程序。而要想打開這個activity,只有知道它名字的人才可以。跟系統的intent一樣使用。它的名字定義為"testApp",所以,這里用這個字元串就可以調用它了在另一個項目中調用上述APK。代碼如下java">Intentintent=newIntent("testApp");startActivity(intent);啟動另外一個apkjava">IntentmIntent=newIntent();ComponentNamecomp=newComponentName(packageName,activityName);mIntent.setComponent(comp);mIntent.setAction("android.intent.action.VIEW");startActivity(mIntent);
⑹ android 如何調用 底下的 activity 到前台 我不想新建
要達到這個需求,可以設置activity的啟動模式為singleTask或者singleInstance
activity一共有4中啟動模式
standard
默認模式,可以不用寫配置。在這個模式下,都會默認創建一個新的實例。因此,在這種模式下,可以有多個相同的實例,也允許多個相同Activity疊加。
例如:
若有一個Activity名為A1, 上面有一個按鈕可跳轉到A1。那麼如果點擊按鈕,便會新啟一個Activity A1疊在剛才的A1之上,再點擊,又會再新啟一個在它之上……
點back鍵會依照棧順序依次退出。
singleTop
可以有多個實例,但是不允許多個相同Activity疊加。即,如果Activity在棧頂的時候,啟動相同的Activity,不會創建新的實例,而會調用其onNewIntent方法。
例如:
若有兩個Activity名為B1,B2,兩個Activity內容功能完全相同,都有兩個按鈕可以跳到B1或者B2,唯一不同的是B1為standard,B2為singleTop。
若我意圖打開的順序為B1->B2->B2,則實際打開的順序為B1->B2(後一次意圖打開B2,實際只調用了前一個的onNewIntent方法)
若意圖打開的順序為B1->B2->B1->B2,則實際打開的順序與意圖的一致,為B1->B2->B1->B2。
singleTask
只有一個實例。在同一個應用程序中啟動的時候,若Activity不存在,則會在當前task創建一個新的實例,若存在,則會把task中在其之上的其它Activity destory掉並調用它的onNewIntent方法。
如果是在別的應用程序中啟動它,則會新建一個task,並在該task中啟動這個Activity,singleTask允許別的Activity與其在一個task中共存,也就是說,如果在這個singleTask的實例中再打開新的Activity,這個新的Activity還是會在singleTask的實例的task中。
例如:
若應用程序中有三個Activity,C1,C2,C3,三個Activity可互相啟動,其中C2為singleTask模式,那麼,無論在這個程序中如何點擊啟動,如:C1->C2->C3->C2->C3->C1-C2,C1,C3可能存在多個實例,但是C2隻會存在一個,並且這三個Activity都在同一個task裡面。
但是C1->C2->C3->C2->C3->C1-C2,這樣的操作過程實際應該是如下這樣的,因為singleTask會把task中在其之上的其它Activity destory掉。
操作:C1->C2 C1->C2->C3 C1->C2->C3->C2 C1->C2->C3->C2->C3->C1 C1->C2->C3->C2->C3->C1-C2
實際:C1->C2 C1->C2->C3 C1->C2 C1->C2->C3->C1 C1->C2
若是別的應用程序打開C2,則會新啟一個task。
如別的應用Other中有一個activity,taskId為200,從它打開C2,則C2的taskIdI不會為200,例如C2的taskId為201,那麼再從C2打開C1、C3,則C2、C3的taskId仍為201。
注意:如果此時點擊home,然後再打開Other,發現這時顯示的肯定會是Other應用中的內容,而不會是應用中的C1 C2 C3中的其中一個。
singleInstance
只有一個實例,並且這個實例獨立運行在一個task中,這個task只有這個實例,不允許有別的Activity存在。
例如:
程序有三個ActivityD1,D2,D3,三個Activity可互相啟動,其中D2為singleInstance模式。那麼程序從D1開始運行,假設D1的taskId為200,那麼從D1啟動D2時,D2會新啟動一個task,即D2與D1不在一個task中運行。假設D2的taskId為201,再從D2啟動D3時,D3的taskId為200,也就是說它被壓到了D1啟動的任務棧中。
若是在別的應用程序打開D2,假設Other的taskId為200,打開D2,D2會新建一個task運行,假設它的taskId為201,那麼如果這時再從D2啟動D1或者D3,則又會再創建一個task,因此,若操作步驟為other->D2->D1,這過程就涉及到了3個task了。
⑺ android 怎麼調用activity的方法
想在一個Activity裡面調用另外一個Activity的方法主要有介面回調和靜態方法。但是除了靜態方法之外,並不推薦介面回調方法。
其中靜態方法實現參考如下表述:
需求:在A activity中調用 B activity的methodB()。
實現:使用靜態實現。
在B方法中定義:
1
public static void methodB(){}
在A中需要使用methodB()的地方這樣調用:
1
B.methodB();
為何不推薦在一個Activity中調用另一個Activity呢。因為Android系統運行內存較小,故其系統會在需要的時候將後台的進程自動清理掉以為當前進程提供運行內存。而android移動設備除了當前正在顯示的activity意外,其他的activity都在後台運行。例如你在A activity中調用B activity 的方法時候,有可能B activity已經被銷毀,所以,只能使用B activity的靜態方法。
最後的做法是將Activity界面顯示和邏輯分開寫在不同的類中,這樣才復合程序開發的MVC框架還有Java編程的面向對象思想。
⑻ android 應用調用另外一個應用的activity
這個首先你要知道app2的activity的名字才行。你知道了就簡單了,不知道的話,只能通過log一個個的看。比如app2中有個activity的名字為MyActivity,完整的包名是com.example.app2.MyActivity.那麼你從app1跳過去可以這樣跳:
Intent in = new Intent();
in.setClassName("com.example.app2", "com.example.app2.MyActivity");
mContext.startActivity(in);
⑼ android fragment 怎樣調用activity中的方法
我的方法是這樣的
聲明一個介面,讓Activity實現它,然後在Fragment中判斷Activity是否實現它,調用Activity方法
具體:
介面聲明:
public interface ChatBackListener {
void logout();
}
在Activity實現它
然後在Fragment中在要調用Activity的方法這么寫:
if(getActivity() instanceof ChatBackListener){
((ChatBackListener)getActivity()).logout();
}
⑽ android 裡面如何在一個Activity裡面調用另外一個Activity裡面的方法
靜態調用,如果有組件的初始化這些操作,是絕對會報這個錯誤的,因為Activity方法不會去調用它的OnCreate方法,無法載入xml布局
。
假使你要去初始化整個Activity,其
構造方法
也是無法初始化的,所以也是空指針
。