androidactivity的跳轉
1. android中從一個activity跳轉到另一個activity的詳細步驟
主配置文件(AndroidManifest)注冊activity,代碼中跳轉。
startActivity(new Intent(Activity A,Activity B));
2. 安卓開發:如何得知當前activity是被壓入後台,還是跳轉到新的activity
最近學習安卓開發activity的生命周期,對單個活動的生命周期較為熟悉。此時師兄拋出問題,當一個activity進入 onStop() 時,如何得知時由於用戶點擊了主頁鍵,還是由於進入了另一個本程序的activity?
查閱網路資源後,得知可以通過安卓本身的多種方法來判斷。不過某些方法的使用需要獲取用戶授權,或者需要較高版本的安卓系統。不過本文主要介紹通過activity本身的生命周期回調函數來判斷。
由於設計兩個activity的跳轉,所以我們應該去考慮多個activity的生命周期回調函數順序。查閱並測試可知,當進行activity跳轉時,先執行原來activity的 onPause() 和,然後執行第二個activity的 onCreate() 、 onStart() 、 onResume() ,再執行第一個activity的 onStop 。如圖所示,紅色是第一個activity的回調函數執行,藍色是第二個。
我們可以利用這個特點,通過一個static變數來記錄當前run的activity數量,當這個數量為0的時候,即程序被壓入後台,當這個數量不為0,則表明當前執行了一個跳轉操作。
首先新建一個 BaseActivity 類,聲明一個static變數,讓別的activity全部繼承。並在 onStart() 和 onStop() 中修改 count 。
創建 MainActivity 類,繼承自 BaseActivity 類,同時修改 onStop() ,檢查 count 的值,判斷此次導致 onStop() 的原因。我在這個activity中添加了一個button用於跳轉到第二個activity。
這個類很簡單,沒有什麼功能,只是跳轉過來後,執行基類的 onCreate() 方法。
至此,我們便實現了通過activity生命周期回調函數判斷是否被壓入後台。不過,後來學長針對我的這種方式提出了漏洞——當引用外部SDK,且外部SDK中可以彈出未繼承我們自定義的base基類的activity,那麼怎麼處理這種情況呢?這里就要用到安卓SDK提供的全局生命周期類了——Application.,這里我們之後再談。
3. 安卓Activity無法實現跳轉
android中自動跳轉activity的方法為:
1、在onCreate里設置個Timer,然後建立Intent指向要調用Activity。
2、設置Timer 10妙後執行startActivity就行了。
3、示例代碼:
final Intent it = new Intent(this, Activity1.class); //你要轉向的Activity
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
startActivity(it); //執行
}
};
timer.schele(task, 1000 * 10); //10秒後
4、也可以用線程式控制制
int _splashTime = 3000;
Thread splashTread = new Thread() {
@Override
public void run() {
try {
int waited = 0;
while(waited < _splashTime) {
sleep(100);
waited += 100;
}
} catch(InterruptedException e) {
// do nothing
} finally {
finish();
// 啟動主應用
Intent intent = new Intent();
intent.setClass(this, Activity1.class);
startActivity(intent);
stop();
}
}
};
splashTread.start();
4. android 兩個app之間的activity怎麼跳轉
android中intent實現兩個不同應用Activity跳轉,可以用以下的方法: 開發有時需要在一個應用中啟動另一個應用,比如Launcher載入所有的已安裝的程序的列表,當點擊圖標時可以啟動另一個應用。一般我們知道了另一個應用的包名和MainActivit y的名字之後便可以直接通過如下代碼來啟動: [java] view plain Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn); startActivity(intent); 但是更多的時候,我們一般都不知道目標應用程序的啟動Activity的類名,而只知道包名,接下來就需要這么做了,我封裝成了一個方法,如下所示: [java] view plain private void (String packagename) { // 通過包名獲取此APP詳細信息,包括Activities、services、versioncode、name等等 PackageInfo packageinfo = null; try { packageinfo = getPackageManager().getPackageInfo(packagename, 0); } catch (NameNotFoundException e) { e.printStackTrace(); } if (packageinfo == null) { return; } // 創建一個類別為CATEGORY_LAUNCHER的該包名的Intent Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(packageinfo.packageName); // 通過getPackageManager()的queryIntentActivities方法遍歷 List<ResolveInfo> resolveinfoList = getPackageManager() .queryIntentActivities(resolveIntent, 0); ResolveInfo resolveinfo = resolveinfoList.iterator().next(); if (resolveinfo != null) { // packagename = 參數packname String packageName = resolveinfo.activityInfo.packageName; // 這個就是我們要找的該APP的LAUNCHER的Activity[組織形式:packagename.mainActivityname] String className = resolveinfo.activityInfo.name; // LAUNCHER Intent Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); // 設置ComponentName參數1:packagename參數2:MainActivity路徑 ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn); startActivity(intent); } }
5. 安卓應用開發中Activity之間怎麼用按鈕進行跳轉
activity的跳轉一般有兩種方式,一種是用action的隱式跳轉,還有種就是用類名做的顯式跳轉。
對於初學者來說(比如我)還是比較喜歡用顯式跳轉,因為比較方便,也不用配置那麼多的東西
Intent intent = new Intent(當前activity.this,要跳轉到的activity.class);
startActivity(intent);
這樣就能跳轉過去了。
按鈕的操作,就是給按鈕做一個點擊事件
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
然後把跳轉的那一條語句放到這裡面
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(當前activity.this,要跳轉到的activity.class);
startActivity(intent);
}
});
跳轉就完成了。
關於隱式和顯示跳轉之間的關系還有方式可以到下面的鏈接去看看http://blog.sina.com.cn/s/blog_5d2e69770102v0ra.html