//用intent.putExtra(String name, String value)来传递参数。
intent.putExtra("one",number1)
intent.putExtra("two", number2)
intent.setClass(activity1.this, activity2.class)
startActivity(intent)
然后在activity2中
Intent intent1 = getIntent()
// 用intent1.getStringExtra()来得到activity1发过来的字符串。
String one = intent1.getStringExtra("one")
String two = intent1.getStringExtra("two")
然后在sql语句获取值存储。
做个activity的管理队列就好了,自己写个activity的基类,在基类activity的oncreate方法中调用addActivity,onDestroy中调用removeActivity。这些方法都写到自定义的application类里,在需要关闭的时候,调用close方法,在close方法里判断下activity是否是A的实例,时就不关闭A,大概思路就是这样,public List activityList = new LinkedList()// 添加Activity到容器中 public void addActivity(BaseActivityactivity) { activityList.add(activity)} public void close() { for (Activity activity : activityList) { //Log.e("", "close:" + activity.getLocalClassName())if(activity != null ){ activity.finish()} } activityList = new LinkedList()} public void removeActivity(Activity activity) { int i =0for (Activity ac : activityList) { //Log.e("", "close:" + activity.getLocalClassName())if(ac.equals(activity)) { activityList.remove(ac)break} i++}可以建一个list 存放这些不是登录的activity然后返回键的时候...把LIST中的activity finish
这是一种方法
问题如下:
多activity中退出整个程序,例如从A->B->C->D,这时我需要从D直接退出程序。
解决问题:
我们知道Android的窗口类提供了历史栈,我们可以通过stack的原理来巧妙的实现,这里我们在D窗口打开A窗口时在Intent中直接加入标志 Intent.FLAG_ACTIVITY_CLEAR_TOP,再次开启A时将会清除该进程空间的所有Activity。.
在D中使用下面的代码:*
Intent tent = new Intent()
tent.setClass(D.this, A.class)
tent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity( tent )
finish()
在A中加入下面的代码:*
@Override
protected void onNewIntent(Intent intent) {
System.out.println("a Test is onNewIntent().............")
// TODO Auto-generated method stub
super.onNewIntent(intent)
//退出
if ((Intent.FLAG_ACTIVITY_CLEAR_TOP &intent.getFlags()) != 0) {
finish()
}
}
A的Manifest.xml配置成android:launchMode="singleTop" (A实例的启动模式,singleTop是和onNewIntent()结合使用的)
原理总结:
一般A是程序的入口点,从D起一个A的activity,加入标识Intent.FLAG_ACTIVITY_CLEAR_TOP这个过程中会把栈中B,C,都清理掉。因为A是android:launchMode="singleTop"' 不会调用oncreate(),而是响应onNewIntent()这时候判断Intent.FLAG_ACTIVITY_CLEAR_TOP,然后把A finish()掉。
栈中A,B,C,D全部被清理。所以整个程序退出了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)