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