Activity,Intent相关知识

原创 2016年08月29日 20:57:43

Activity BrocastReceiver Service ContentProvider

Activity生命周期

onCreate()//创建 onStart()//可见 onResume()//可触摸 onPause()//不可触摸 onStop()//不可见 onDestory()//销毁 onRestart()//重新开始

finish() 方法 销毁当前activity

Activity 的构造方法必须是无参的
activity 被销毁时类不结束。activity中不要用static属性

Activity横屏竖屏

横屏会销毁activity 然后重新创建

EditText等一些可以选择的控件。 携带的数据需要本身有id才能传递

其他控件要传递值需要 (现场保护)。横屏之后屏幕数据不发生改变

  protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
        //在onCreate方法中去除Bundle的值
          if (savedInstanceState != null) {
              CharSequence text = savedInstanceState.getCharSequence("text");
              textView.setText(text);
            }
   }

 @Override
protected void onSaveInstanceState(Bundle outState) {
   super.onSaveInstanceState(outState);
  // bundle 以map形式存储数据,存储可以被传输的值
outState.putCharSequence("text",textView.getText());
}

如果有横屏的需要的话 可以新建资源文件夹Layout,然后选择横屏展示布局。可以展示横屏竖屏不同的布局样式。

设置屏幕只能横屏或竖屏,在AndroidManifest.xml文件下 activity中设置

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.hasee.radiogrouptest">

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity"  android:screenOrientation="portrait">//此处设置
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

android:screenOrientation=”portrait” 常用的参数

portrait 竖屏

reversePortrait 反转的竖屏

sensorPortrait 重力竖屏

userPortrait 用户当前的首选方向

landscape 横屏

reverseLandscape 反转横屏

sensorLandscape 重力横屏

userLandscape

Intent

1显示意图

Intent intent = new Intent(this, OtherActivity.class);//显示启动
startActivity(intent);

2隐式意图

 Intent intent = new Intent(Intent.ACTION_BATTERY_LOW); //电量低
        startActivity(intent);
     Intent intent = new Intent(Intent.ACTION_MAIN);
     intent.addCategory(Intent.CATEGORY_LAUNCHER);//进入主activity 跳转的时候让选择启动哪个应用
     startActivity(intent);
     Intent intent = new Intent(Intent.ACTION_DIAL);//启动系统电话
        intent.setData(Uri.parse("tel:123456"));
        startActivity(intent);

自定义 intent,在Activitymanifest.xml中activiy下设置intent-filter。然后在代码中跳转

     <activity android:name=".ImageActivity">
            <intent-filter>//自定义intent-filter
                <action android:name="com.example.hasee.sharedemo.IMAGE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
  Intent intent = new Intent(this, ImageActivity.class);
        startActivity(intent);

从程序中跳入到另外一个程序,需要知道别的应用程序的包名和类名

 Intent intent = new Intent();
intent.setComponent(new ComponentName("com.example.hasee.scrollviewtext828","com.example.hasee.scrollviewtext828.Main2Activity" ));
    startActivity(intent);

在service 和BrocastReceiver 启动activity 需要 Intent. … Task

对返回键进行修改 ,点击两次退出程序

    @Override
    public void onBackPressed() {
   //        super.onBackPressed(); 需要删除系统的退出方法
        //三秒内双击退出应用
        if ((SystemClock.uptimeMillis() - time) < 3000) {
            // finishAffinity(); API 16之后才能使用,退出应用
            ActivityCompat.finishAffinity(this); //v4包下 退出应用
         //  System.exit(0);//退出进程,系统会重启应用
        //    Process.killProcess(Process.myPid());//杀死进行,系统会重启应用
        } else {
            Toast.makeText(MainActivity.this, "再点一次退出", Toast.LENGTH_SHORT).show();
            time = SystemClock.uptimeMillis();
        }
    }

四大组件除了Activity外其他的启动Activity

需要设置Intent的flag ,新建一个栈存放Activity 。

  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

下边flag当跳回到此Activity时会清空上边的所有activity

  Intent intent = new Intent(this, Main2Activity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);

Activity的模式

在ActivityManifest.xml文件中设置

standard 默认方式。

singleInstance 会新建一个栈存放Activity

singleTask 一个栈中只能有一个,想要置顶就把上边的 全清除掉

singleTop 顶部只能有一个,发现启动的Activity栈顶是自己本Activity就不启动了

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//两个结合相当于singleInstance
   intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

Intent的Extra 属性

 Intent intent = new Intent(this, Main2Activity.class);
        intent.putExtra("text", editText.getText());
        startActivity(intent);

在Main2Activity中

   CharSequence text = getIntent().getCharSequenceExtra("text");
        textView.setText(text);

onNewIntent

Activity在singleinstance模式下跳转到某个Activity是可能不执行onCreate方法,所以当intent携带的extra数据可能不会被调用。所以需要 方法,将数据调用。

  @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        CharSequence text = intent.getCharSequenceExtra("text");
        textView.setText(text);
    }

startActivityForResult()

解读Android之Activity(1)基础知识

本文翻译自android官方文档,结合自己测试,整理如下。主要内容包括:创建Activity,实现用户接口,在manifest文件中声明Activity,使用intent filters,启动Acti...
  • wangyongge85
  • wangyongge85
  • 2015年08月25日 12:01
  • 61794

Android笔记五.Intent异常处理及常用系统调用

Intent异常处理及常用系统调用 Jiangdg_VIP http://blog.csdn.net/u012637501 一、Intent异常处理      当Intent对象启动组件或应用时,...
  • u012637501
  • u012637501
  • 2014年11月18日 22:15
  • 1803

打开一个新的activity并关闭当前activity,以及intent的用法

Intent intent = new Intent();    intent.setClass(Forward.this, ForwardTarget.class);//forward为当前a...
  • a5251199
  • a5251199
  • 2016年07月12日 16:38
  • 2855

Activity Intent Flags及Task相关属性

原文地址 我们来讲一下Activity的task相关内容。 上次我们讲到Activity的四种启动模式的时候,已经了解到一些关于task的技术,今天我再向大家介绍一下。task是一个具有栈结构...
  • u012571415
  • u012571415
  • 2015年07月15日 11:17
  • 324

Intent相关FLAG介绍和Activity启动模式

先首先简单介绍下Task和Activity的关系 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activi...
  • miao309410364
  • miao309410364
  • 2015年08月03日 21:22
  • 2434

Activity跳转管理相关的Launch mode 以及Intent的setFlags

Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别: standard:Activ...
  • xiahao86
  • xiahao86
  • 2013年01月14日 09:57
  • 502

Android中Activity、Intent相关Flag介绍

先首先简单介绍下Task和Activity的关系Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity)则会...
  • lucasey
  • lucasey
  • 2016年06月28日 17:07
  • 329

Android总结篇系列:Activity Intent Flags及Task相关属性

同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者。 原文地址: http://blog.csdn.net/liuhe688/article/details/67...
  • tantion
  • tantion
  • 2017年12月13日 09:43
  • 122

Android总结篇系列:Activity Intent Flags及Task相关属性

Windstep 专注Android领域开发。 仰望星空,同时需要脚踏实地。 ——好记性不如烂博客 Android总结篇系列:Activity Intent Flags及T...
  • lcugym
  • lcugym
  • 2015年08月10日 09:34
  • 954

Activity Intent相关FLAG介绍

先首先简单介绍下Task和Activity的关系 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(A...
  • ly985557461
  • ly985557461
  • 2015年07月16日 12:19
  • 407
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Activity,Intent相关知识
举报原因:
原因补充:

(最多只允许输入30个字)