「flagactivitycleartop」android activity FLAG_ACTIVITY_CLEAR_TOP 怎么传Extra值

admin
摘要android activity FLAG_ACTIVITY_CLEAR_TOP 怎么传Extra值在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的...

android activity FLAG_ACTIVITY_CLEAR_TOP 怎么传Extra值

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。   Android总Activity的启动模式分为四种: Activity启动模式设置: Activity的四种启动模式: 1. standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2. singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。 3. singleTask 如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 4. singleInstance 在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。   其中standard是系统默认的启动模式。

为什么有时候启动Activity需要加FLAG

android intent设置flag清除栈顶activity: intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 其tag: 1.FLAG_ACTIVITY_CLEAR_TOP:跳转activity若已栈存则其activity都销掉 2.FLAG_ACTIVITY_NEW_TASK:activity要存于activity栈非activity途径启activity必存activity栈所要新起栈装入启activity简言跳转activity根据情况能压新建栈 3.FLAG_ACTIVITY_NO_HISTORY:跳转activity压栈 4.FLAG_ACTIVITY_SINGLE_TOP:ActivityLaunch modesingleTop类似某intent添加标志并且intent目标activity栈顶activity新建实例压入栈简言目标activity已栈顶则跳转栈顶则栈顶新建activity

android 怎么用Intent.setFlag 清除以前的activity

android intent中设置如下flag,可以清除栈顶的activity:

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

还有其他tag如下:

1.FLAG_ACTIVITY_CLEAR_TOP:跳转到的activity若已在栈中存在,则将其上的activity都销掉。

2.FLAG_ACTIVITY_NEW_TASK:activity要存在于activity的栈中,而非activity的途径启动activity时必然不存在一个activity的栈,所以要新起一个栈装入启动的activity。简而言之,跳转到的activity根据情况,可能压在一个新建的栈中。

3.FLAG_ACTIVITY_NO_HISTORY:跳转到的activity不压在栈中。

4.FLAG_ACTIVITY_SINGLE_TOP:和Activity的Launch mode的singleTop类似。如果某个intent添加了这个标志,并且这个intent的目标activity就是栈顶的activity,那么将不会新建一个实例压入栈中。简而言之,目标activity已在栈顶则跳转过去,不在栈顶则在栈顶新建activity。

intent的几种有关activity启动的方式有哪些,说一下每个的含义

Intent的一些标记有FLAG_ACTIVITY_BROUGHT_TO_FRONT 、FLAG_ACTIVITY_CLEAR_TOP、 FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、 FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_TASK 等。 每种含义大家看SDK文档和具体跑下这样你的记忆会更深刻些。

android 怎么判断应用是否退出

在Android中退出程序比较麻烦,尤其是在多个Activity的程序中,在2.2之前可以采用如下代码退出程序:

Java代码

[java]

ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);

am.restartPackage(getPackageName());

ActivityManager am = (ActivityManager)getSystemService (Context.ACTIVITY_SERVICE);

am.restartPackage(getPackageName());

此种方法是一种最方便和最简单的退出程序的办法,但是在2.2和2.2之后就不能用了,那么如果我们要退出程序有4种办法:

采用content

view栈:如果程序是多界面,但是又没有强制要求每一个界面一个Activity,可以将每个界面设计为一个View,在界面切换时,只需要调用

Activity的setContentView方法设置Activity的Contentview,这样退出程序只需要将这一个Activity退出

就可以了,但是需要设计一个栈来管理content view。

可以自定义一个Activity的栈,在程序退出时将栈中的所有的Activity进行finish,这种方法,我以前的文章中有详述。

前两种方法的精髓之处都是需要自己设计一个栈用来管理界面或者Activity,这样程序就比较复杂一些。 第3中方法就是,先让程序到Home界面,然后再将process杀死:代码如下:

[java]

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

android.os.Process.killProcess(Process.myPid());

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.addCategory(Intent.CATEGORY_HOME);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

startActivity(intent);

android.os.Process.killProcess(Process.myPid());

4.还有一种就是使用方法是使用Android的Broadcast机制。在所有的Activity中注册退出程序的消息,当收到消息时调用finish方法。 然后再有退出程序功能的Activity上广播关闭消息。代码如下:

[java]

package com.kingtone.activity;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

/**

* 所有Activity的父类,用来注册退出程序的广播事件,

* 并且对收到的退出程序事件进行处理

* @author Administrator

*

*/

public class CommonActivity extends Activity {

//广播的内部类,当收到关闭事件时,调用finish方法结束activity

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

finish();

}

};

@Override

public void onResume() {

super.onResume();

//在当前的activity中注册广播

IntentFilter filter = new IntentFilter();

filter.addAction(GlobalVarable.EXIT_ACTION);

this.registerReceiver(this.broadcastReceiver, filter);

}

}

package com.kingtone.activity;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

/**

* 所有Activity的父类,用来注册退出程序的广播事件,

* 并且对收到的退出程序事件进行处理

* @author Administrator

*

*/

public class CommonActivity extends Activity {

//广播的内部类,当收到关闭事件时,调用finish方法结束activity

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {

@Override

public void onReceive(Context context, Intent intent) {

finish();

}

};

@Override

public void onResume() {

super.onResume();

//在当前的activity中注册广播

IntentFilter filter = new IntentFilter();

filter.addAction(GlobalVarable.EXIT_ACTION);

this.registerReceiver(this.broadcastReceiver, filter);

}

}

在需要退出程序的Activity(CommonActivity的子类)中,退出程序代码如下:

[java]

Intent intent = new Intent();

intent.setAction(GlobalVarable.EXIT_ACTION); // 退出动作

this.sendBroadcast(intent);// 发送广播

super.finish();

//退出后台线程,以及销毁静态变量

System.exit(0);

Intent intent = new Intent();

intent.setAction(GlobalVarable.EXIT_ACTION); // 退出动作

this.sendBroadcast(intent);// 发送广播

super.finish();

//退出后台线程,以及销毁静态变量

System.exit(0);

监听并处理用户按下back键的方法

[java]

package com.example.android_test01;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.Menu;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

System.out.println("你按下了back1");

show_simple();

return super.onKeyDown(keyCode, event);

}

//先调用的onKeyDown(int keyCode, KeyEvent event)方法,然后调用的onBackPressed()方法;

@Override

public void onBackPressed() {

// TODO Auto-generated method stub

System.out.println("按下back,立刻退出activity时调用");

super.onBackPressed();

}

public void show_simple()

{

AlertDialog.Builder builder=new Builder(this);

builder.setTitle("欢迎使用本软件");

builder.setPositiveButton("确定", new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

//退出应用;

finish();

}

});

builder.setNegativeButton("取消", new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

}

}) ;

builder.create().show();

}

}

package com.example.android_test01;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.AlertDialog.Builder;

import android.content.DialogInterface;

import android.content.DialogInterface.OnClickListener;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.Menu;

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

System.out.println("你按下了back1");

show_simple();

return super.onKeyDown(keyCode, event);

}

//先调用的onKeyDown(int keyCode, KeyEvent event)方法,然后调用的onBackPressed()方法;

@Override

public void onBackPressed() {

// TODO Auto-generated method stub

System.out.println("按下back,立刻退出activity时调用");

super.onBackPressed();

}

public void show_simple()

{

AlertDialog.Builder builder=new Builder(this);

builder.setTitle("欢迎使用本软件");

builder.setPositiveButton("确定", new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

//退出应用;

finish();

}

});

builder.setNegativeButton("取消", new OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

}

}) ;

builder.create().show();

}

}

如何将后台运行的Activity置于前台

放后台代码:

Intent intent = new Intent(Intent.ACTION_MAIN);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//

注意,这个地方最重要,关于解释,自己google吧

intent.addCategory(Intent.CATEGORY_HOME);

this.startActivity(intent);

如果Activity非被结束,则调用:

Intent intent = new Intent(Message.this, Main_Activity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP

| Intent.FLAG_ACTIVITY_NEW_TASK);

今天的内容先分享到这里了,读完本文《「flagactivitycleartop」android activity FLAG_ACTIVITY_CLEAR_TOP 怎么传Extra值》之后,是否是您想找的答案呢?想要了解更多百科知识,敬请关注本站,您的关注是给小编最大的鼓励。

标签:flagactivitycleartopandroidactivityFLAG_为什么有时候启动Activity需要加Fandroid怎么用Intent.setintent的几种有关activity启说一下每个的含义_百度知...android怎么判断应用是否退出如何将后台运行的Activity置于前台

免责声明:本文由用户上传,如有侵权请联系删除!