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()

相关文章推荐

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

先首先简单介绍下Task和Activity的关系 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activi...

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

Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别: standard:Activ...

Android中Activity、Intent相关Flag介绍

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

Activity Intent Flags及Task相关属性

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

Activity Intent相关FLAG介绍

先首先简单介绍下Task和Activity的关系 Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(A...

Android基础知识:Activity生命周期和Intent用法

Day06 Activity生命周期和Intent用法一、Activity的跳转1. 创建第二个Activity 需要在清单文件中为其配置一个activity标签 标签中如果带有这个子节点,则会在系统...

Activity详解、Intent使用、Fragment详解-Android基础知识整理

Activity详解 Intent的使用 Fragment详解Part 1:Activity详解1.什么是活动

[Android知识体系]之四大组件:activity(序列化和intent传递对象)

其实activity是最基本要掌握的,但是如果要深究,其实非常多好讲的。这篇文章是先学习序列化,再对android使用序列化传递对象进行介绍。第一小节 Serializabale一、序列化和反序列...

Android(一) activity、intent知识和总结

导读: 第一部分,基础activity知识 第二部分,Intent传递值 第三部分,Intent传递类对象 Activity1.创建Activity的注意点 1.1一个Activit...

应用程序基础知识:activity和intent——Android开发秘籍

应用程序基础知识:activity和intent——Android开发秘籍 v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Activity,Intent相关知识
举报原因:
原因补充:

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