intent

第七次作业(2)

孤街浪徒 提交于 2019-12-01 22:33:35
package com.example.sevenzuoy; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity implements View.OnClickListener{ private EditText mPhone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button mBu = (Button) findViewById(R.id.bu); mBu.setOnClickListener(this); mPhone = (EditText)

第七次作业2

假如想象 提交于 2019-12-01 19:45:02
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.homework8.MainActivity" > <LinearLayout android:orientation="horizontal" android:id="@+id/LinearLayout1" android:layout_width="wrap_content" android:layout

Activity启动过程

懵懂的女人 提交于 2019-12-01 18:42:32
#Activity启动过程 ###一些基本的概念 ActivityManagerServices,简称AMS,服务端对象,负责系统中所有Activity的生命周期 ActivityThread,App的真正入口。当开启App之后,会调用main()开始运行,开启消息循环队列,这就是传说中的UI线程或者叫主线程。与ActivityManagerServices配合,一起完成Activity的管理工作 ApplicationThread,用来实现ActivityManagerService与ActivityThread之间的交互。在ActivityManagerService需要管理相关Application中的Activity的生命周期时,通过ApplicationThread的代理对象与ActivityThread通讯。 ApplicationThreadProxy,是ApplicationThread在服务器端的代理,负责和客户端的ApplicationThread通讯。AMS就是通过该代理与ActivityThread进行通信的。 Instrumentation,每一个应用程序只有一个Instrumentation对象,每个Activity内都有一个对该对象的引用。Instrumentation可以理解为应用进程的管家

Android第七次作业(1)

六眼飞鱼酱① 提交于 2019-12-01 17:03:14
第一个Activity <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="60dp" android:layout_marginLeft="20dp" android:layout_marginTop="60dp" android:layout_marginRight="20dp" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="手机号码:" android

快速连续点击两次出现相同内容的解决方法

社会主义新天地 提交于 2019-12-01 16:51:42
解决方法:将启动页的android:launchMode设置成singleTask后,从启动页打开一个activity。即在AndroidManifest.xml文件找到相应的activity,加入android:launchMode="singleTask",程序就只会创建唯一一个启动页了。 多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity。可能会希望跳转到原来某个Activity实例,而不是产生大量重复的Activity。 这需要为Activity配置特定的加载模式,而不是使用默认的加载模式。 加载模式分类及在哪里配置 Activity有四种加载模式: standard singleTop singleTask singleInstance 设置的位置在AndroidManifest.xml文件中activity元素的android:launchMode属性: <activity android:name="ActB"android:launchMode="singleTask"></activity> 也可以在Eclipse adt 中图形界面中编辑: 区分Activity的加载模式,通过示例一目了然。这里编写了一个Activity A(ActA)和Activity B(ActB)循环跳转的例子

一个应用程序和另一个应用程序apk文件信息

為{幸葍}努か 提交于 2019-12-01 16:50:16
应用场景:对于我们自己开发的两个应用程序,一个应用程序的包名为 aa.bb.cc,软件名叫a,它的入口Activity为 aaActivity(入口activity就是在AndroidManifest.xml中标签——<action android:name="android.intent.action.MAIN" />所在的activity,说白了,就是打开应用程序,第一个显示的activity),另一个应用程序的包名为 xx.yy.zz,软件名叫x,它的入口Activity为 xxActivity。 网上的通用做法如下(这里我假设a中有一个Button,这个Button的onclick事件中的代码如下): ComponentName componentName=new ComponentName("xx.yy.zz","xx.yy.zz.xxActivity"); Intent intent=new Intent(); intent.setComponent(componentName); intent.setAction(Intent.ACTION_VIEW); startActivity(intent); 这种方法对于调用我们自己写的应用程序没有问题,但是如果你想调用别人的应用程序(例如:你写了一个游戏管理的软件,需要管理很多游戏,但是游戏不是你写的

【转】Activity的Launch mode详解 singleTask正解

烂漫一生 提交于 2019-12-01 16:47:27
转自http://hi.baidu.com/amauri3389/blog/item/a54475c2a4b2f040b219a86a.html 参见:http://mypyg.iteye.com/blog/919643 http://marshal.easymorse.com/archives/2950 http://blog.csdn.net/infsafe/article/details/5666964 Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别: standard:Activity的默认加载方法,即使某个Activity在Task栈中已经存在,另一个activity通过Intent跳转到该activity,同样会新创建一个实例压入栈中。例如:现在栈的情况为:A B C D,在D这个Activity中通过Intent跳转到D,那么现在的栈情况为: A B C D D 。此时如果栈顶的D通过Intent跳转到B,则栈情况为:A B C D D B。此时如果依次按返回键,D D C B A将会依次弹出栈而显示在界面上。 singleTop:如果某个Activity的Launch mode设置成singleTop,那么当该Activity位于栈顶的时候

拍照PhotoIntentActivity总结

帅比萌擦擦* 提交于 2019-12-01 16:46:25
拍照 PhotoIntentActivity 总结 项目地址: http://developer.android.com/training/camera/photobasics.html 1 低版本使用高版本的 api 1.1 起因 比如在 gradle 配置文件里: 再看 getExternalStoragePublicDirectory() 方法 也就是说,这个方法在 api level 8 中才添加进来的,而我的 app 需要在最小版本 4 中使用,如果直接使用这个方法,那个 android studio 会报错,编译不过去。 纠正:这里用 api level 4 也不行,最后改成 7 ,好像是 这个 v7 包,最小是 7 1.2 TargetApi注解 以上问题可以使用 TargetApi 注解来解决,如下 这里还需要注意一个问题,这里的 compileSdkVersion 也是不能小于 8 的,如果小于 8 这里的 FROYO 的值是取不到的,假如我取 4 ,那么在 Build.VERSION_CODES 里,只能取到 1 、 2 、 3 、 4 这四个值 这里还需要进一步的处理 这里先判断当前的版本号的大小,来进行不同的操作 1.3 Best Practice 这个 app 中为了获得相册的目录,使用的抽象类,在使用的类中定义一个成员变量,根据版本号不同

《Android深入透析》之广播(Broadcast)

為{幸葍}努か 提交于 2019-12-01 16:45:19
1. 概述 在android中,Broadcast作为四大组件之一,被广泛的应用在android程序之间的数据传递。举一个大家都比较熟悉的例子来说明。在车上的时候大家都有收听广播的习惯,广播电台通过发送不同频率的信号,然后大家通过将各自频率调成和电台相同的频率,就可以接受到广播内容了。在android中的广播其实是和这个是一样的效果的。 2. 广播机制 android 中广播机制体现在方方面面,各种广播在android系统中运行,当系统、应用程序运行时便会向android注册各种广播,例如当开机完成后,系统会发送一条广播,接受到这条广播就能及时的作出提示和保存数据的动作;当你安装卸载应用程序的时候系统都会发送广播,来监听这条广播,就可以作出相应的动作,同样的广播还有很多,比如电量多少,短信,来电等等。 3. 发送和接收广播 3.1 广播定义 关于广播的定义,分为两种,动态注册和静态注册。 动态注册的广播接收器永远要快于静态注册的广播接收器,不管静态注册的广播接收器的优先级是否高于动态注册的广播接收器的优先级。 动态注册的广播不是常驻型的,他是跟随着activity的生命周期的。一般在开发中都会在 onDestroy() 方法中移除广播。静态注册的广播是常驻型的广播,也就是说当应用程序关闭的时候,如果有信息广播来,程序也会被系统调用。在同一优先级下,谁启动的快,谁将先收到广播。 3

说说PendingIntent的内部机制

二次信任 提交于 2019-12-01 16:44:59
说说 PendingIntent 的内部机制 侯 亮 1 概述 在Android中,我们常常使用PendingIntent来表达一种“留待日后处理”的意思。从这个角度来说,PendingIntent可以被理解为一种特殊的异步处理机制。不过,单就命名而言,PendingIntent其实具有一定误导性,因为它既不继承于Intent,也不包含Intent,它的核心可以粗略地汇总成四个字——“异步激发”。 很明显,这种异步激发常常是要跨进程执行的。比如说A进程作为发起端,它可以从系统“获取”一个PendingIntent,然后A进程可以将PendingIntent对象通过binder机制“传递”给B进程,再由B进程在未来某个合适时机,“回调”PendingIntent对象的send()动作,完成激发。 在Android系统中,最适合做集中性管理的组件就是AMS(Activity Manager Service)啦,所以它义不容辞地承担起管理所有PendingIntent的职责。这样我们就可以画出如下示意图: 注意其中的第4步“递送相应的intent”。这一步递送的intent是从何而来的呢?简单地说,当发起端获取PendingIntent时,其实是需要同时提供若干intent的。这些intent和PendingIntent只是配套的关系,而不是聚合的关系,它们会被缓存在AMS中。日后