activity

[Android]Activity的四种加载模式

时光毁灭记忆、已成空白 提交于 2019-12-01 16:51:52
在多 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 )循环跳转的例子。对加载模式修改和代码做稍微改动,就可以说明四种模式的区别。 standard 首先说 standard 模式,也就是默认模式,不需要配置 launchMode 。先只写一个名为 ActA 的 Activity : package com

Android中如何获取应用版本号

守給你的承諾、 提交于 2019-12-01 16:50:31
应用场景 : 1、在界面中显示应用程序的版本号; 2、用户启动该应用,后台判断该应用是否是最新版本。 上述情景都需要在程序中自动获取到应用的版本号。 思路简介 : 在Android中,应用程序的版本号是在AndroidManifest.xml文件中进行配置的,而PackageInfo类则封装了从该配置文件中获取的所有信息,描述了包内容的整体信息,因此,可以使用PackageInfo对象的versionName属性获取应用的版本号。 要怎么获取PackageInfo对象呢?可以通过PackageManager对象来获取。PackageManager是一个检索当前已安装在设备上的相关应用程序包的各种信息的类。PackageManager对象中的getPackageInfo方法可以获取PackageInfo对象,该方法需要传递两个参数:应用包名和条件。通常情况下,应用程序的包名可以通过Activity或Context(Activity继承自Context)的getPackageName()方法获取,而添加可以有很多设置,通常设置为0。 最后是PackageManager对象的获取,Context对象提供了getPackageManager()方法来获取该对象。 综上, 模板代码 如下:(注意,此处封装的方法位于某个Activity中,因此直接使用this来代替Context对象) 1 /

Activity 与 Fragment 之间相互通信

我怕爱的太早我们不能终老 提交于 2019-12-01 16:47:01
欢迎转载,但请保留文章原始出处→_→ 生命壹号: http://www.cnblogs.com/smyhvae/ 文章来源: http://www.cnblogs.com/smyhvae/p/4000390.html 联系方式:smyhvae@163.com 【正文】 一、接口回调的简单引入: 我们先来看一个简单的接口回调的例子: 新建一个Java工程,然后新建一个包。然后新建一个A.java文件: A.java代码如下: package com.cn.callback; public class A { public A() { } //下载图片的操作 public void loadImage(String image_path,final CallBack callBack) { new Thread(new Runnable(){ public void run() { // TODO Auto-generated method stub String msg = "Hello world"; callBack.getResult(msg); } }).start(); } //接口回调我觉得很好理解,那就是:if you call me, i will call you back. public interface CallBack { public void

Android Notification详解——响应notification事件

核能气质少年 提交于 2019-12-01 16:44:28
上一篇讲了如何创建并显示一个notification,这一篇就总结下点击notification后,程序应该如何响应。 一般来讲,点击一个notification后,都会打开一个Activity做为对点击事件的响应,这个Activity是之前在PendingIntent中设置好的。 经常玩Android手机的应该都有印象,在日历应用中,你新建一个提醒,当提醒通知收到后,你点击通知,会进入提醒的内容页面,如果这个时候按back键,会直接退出应用。 但是在Gmail的应用中,如果有一封新邮件到来,那么点击通知后,会进入到邮件的内容页面,等你看完邮件,点击back键,会退到邮件列表页面,再按back键,才会退出应用。 我们总结一下两种情况,假设我们的应用有两个Activity(ParentActivity、SubActivity),notification中设置打开的Activity为SubActivity。 那么第一种情况就是: 点击Notification ——> 进入SubActivity ——> back键 ——> 退出应用 第二种情况: 点击Notification ——> 进入SubActivity ——> back键 ——> 退到ParentActivity ——>back键 ——> 退出应用 第一种情况比较简单,只需要在PendingIntent中指定Activity

Android横竖屏切换总结

被刻印的时光 ゝ 提交于 2019-12-01 13:59:33
Android横竖屏要解决的问题应该就两个: 一.布局问题 二.重新载入问题 1.布局问题:如果不想让软件在横竖屏之间切换,最简单的办法就是在项目的AndroidManifest.xml中找到你所指定的activity中加上android:screenOrientation属性,他有以下几个参数: "unspecified":默认值 由系统来判断显示方向.判定的策略是和设备相关的,所以不同的设备会有不同的显示方向. "landscape":横屏显示(宽比高要长) "portrait":竖屏显示(高比宽要长) "user":用户当前首选的方向 "behind":和该Activity下面的那个Activity的方向一致(在Activity堆栈中的) "sensor":有物理的感应器来决定。如果用户旋转设备这屏幕会横竖屏切换。 "nosensor":忽略物理感应器,这样就不会随着用户旋转设备而更改了("unspecified"设置除外)。 也可以在Java代码中通过setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)来设置。 如果要让软件在横竖屏之间切换,由于横竖屏的高宽会发生转换,有可能会要求不同的布局。可以通过以下方法来切换布局: 1)在res目录下建立layout-land和layout-port目录

第七次作业

若如初见. 提交于 2019-12-01 12:47:05
package com.example.zuoye2; import android.support.v7.app.ActionBarActivity; import com.example.zuoye2.MainActivity; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void CCC(View view)

android onSaveInstanceState

感情迁移 提交于 2019-12-01 11:23:44
无意中留意到 onCreate(Bundle savedInstanceState) ,savedInstanceState究竟是什么,于是上网搜了搜 当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。 注意上面的双引号,何为“容易”?言下之意就是该activity还没有被销毁,而仅仅是一种可能性。这种可能性有哪些?通过重写一个 activity的所有生命周期的onXXX方法,包括onSaveInstanceState和onRestoreInstanceState方法,我 们可以清楚地知道当某个activity(假定为activity A)显示在当前task的最上层时,其onSaveInstanceState方法会在什么时候被执行,有这么几种情况: 1、当用户按下HOME键时。 这是显而易见的,系统不知道你按下HOME后要运行多少其他的程序,自然也不知道activity A是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性的数据。以下几种情况的分析都遵循该原则 2、长按HOME键,选择运行其他的程序时。 3、按下电源按键(关闭屏幕显示)时。 4、从activity A中启动一个新的activity时。

Andriod经典之作(你必须知道 Service 用法)

。_饼干妹妹 提交于 2019-12-01 10:53:01
1、Service的种类 按运行地点分类: 应用本地服务(Local)远程服务(Remote) 应用本地服务(Local) 1) 区别:该服务依附在主进程上, 2) 优点:服务依附在主进程上而不是独立的进程,这样在一定程度上节约了资源,另外Local服务因为是在同一进程因此不需要IPC,也不需要AIDL。相应bindService会方便很多。 3) 缺点:主进程被Kill后,服务便会终止。 4) 应用:非常常见的应用如:HTC的音乐播放服务,天天动听音乐播放服务。 远程服务(Remote) 1) 区别:该服务是独立的进程, 2) 优点:服务为独立的进程,对应进程名格式为所在包名加上你指定的android:process字符串。由于是独立的进程,因此在Activity所在进程被Kill的时候,该服务依然在运行,不受其他进程影响,有利于为多个进程提供服务具有较高的灵活性。 3) 缺点:该服务是独立的进程,会占用一定资源,并且使用AIDL进行IPC稍微麻烦一点。 4) 应用:一些提供系统服务的Service,这种Service是常驻的。 其实remote服务还是很少见的,并且一般都是系统服务。 按运行类型分类: 前台服务后台服务 前台服务 1)会在通知一栏显示 ONGOING 的 Notification, 2)当服务被终止的时候,通知一栏的 Notification 也会消失

Android性能优化

不打扰是莪最后的温柔 提交于 2019-12-01 10:16:43
GITHUB https://blog.51cto.com/6342127/2307514 说明 这篇文章是将很久以来看过的文章,包括自己写的一些测试代码的总结.属于笔记的性质,没有面面俱到,一些自己相对熟悉的点可能会略过.<br> 最开始看到的性能优化的文章,就是胡凯的优化典范系列,后来又陆续看过一些人写的,个人觉得anly_jun和胡凯的质量最好.<br> 文章大的框架也是先把优化典范过一遍,记录个人认为重要的点,然后是anly_jun的系列,将之前未覆盖的补充进去,也包括HenCoder的一些课程相关内容.<br> 当然除了上面几位,还有很多其他大神的文章,时间久了也记不太清,在此一并谢过. 笔记内容引用来源 胡凯 anly_jun HenCoder 1.Android性能优化之渲染篇 1.VSYNC 帧率:GPU在1秒内绘制操作的帧数.如60fps. 我们通常都会提到60fps与16ms,这是因为人眼与大脑之间的协作无法感知超过60fps的画面更新. 开发app的性能目标就是保持60fps,这意味着每一帧只有16ms=1000/60的时间来处理所有的任务 刷新率:屏幕在1秒内刷新屏幕的次数.如60Hz,每16ms刷新1次屏幕. GPU获取图形数据进行渲染,然后屏幕将渲染后的内容展示在屏幕上. 大多数手机屏幕的刷新率是60Hz,如果GPU渲染1帧的时间低于1000/60

作业7

眉间皱痕 提交于 2019-12-01 10:04:51
<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.qaq.MainActivity" > <requestFocus /> <ImageView android:id="@+id/imageView1" android:layout_width="70dp" android:layout_height="70dp" android:layout