activity

Android面试之---讲一下你对Activity的了解(面试必问的).

冷暖自知 提交于 2019-12-26 21:20:58
这篇文章会涉及到以下几个内容 一 Activity的生命周期 二 让Activity变成一个窗口:Activity属性设定 三 你后台的Activity被系统 回收怎么办:onSaveInstanceState 四 调用与被调用:我们的通信使者 - Intent 一 Activity的生命周期 和其他手机 平台 的应用 程序 一样, Android 的应用程序 的生命周期是被统一掌控 的,也 就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习 并 适应它。 简单地说一下为什么是这样:我们手机在运行 一个应用程序的时候,有可能打进来电话 发进来短信 ,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能 ,另 外系统也不允许你占用太多资源 ,至少要保证电话功能吧,所以资源不足的时候也就有可 能被干掉。 言归正传,Activity的基本生命周期如下代码 所示: Java 代码 public class MyActivity extends Activity { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume(); protected void onPause(); protected void

MyBatis调用存储过程

泄露秘密 提交于 2019-12-26 19:27:48
  直接看例子:   1、声明接口: public interface CustomRankingRecordMapper { void saveRankCustomInfoProcedure(); }   2、在CustomRankingRecord.xml定义存储过程: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.migu.reading.dao.CustomRankingRecordMapper"> <!-- 调用存储过程更新自定义排行表 --> <update id="saveRankCustomInfoProcedure" statementType="CALLABLE"> {call PROC_CUSTOM_RECORD_UPDATE} </update> </mapper>   3、在Oracle中创建存储过程: CREATE OR REPLACE procedure VCODE.PROC_CUSTOM_RECORD_UPDATE is cursor ACTIVITY_CUR

内存泄露情况探究

夙愿已清 提交于 2019-12-26 17:54:18
1、 数据库 的 cursor 没有关闭 2、 构造adapter没有使用缓存contentview 衍生的listview优化问题:减少创建View的对象,充分使用contentview,可以使用静态类来处理优化getView的过程 3、Bitmap对象不使用时采用recycle()释放内存 4、Activity中的对象生命周期大于Activity? 调式方法:DDMS->HEAPSIZE->dataobject->total size Android应用程序被限制在 16MB 的堆上运行,至少在T-Mobile G1上是这样。对于手机来说,这是很大的内存了;但对于一些开发人员来说,这算是较小的了。即使你不打算使用掉所有的内存,但是,你也应该尽可能少地使用内存,来确保其它应用程序得以运行。Android在内存中保留更多的应用程序,对于用户来说,程序间切换就能更快。作为我工作的一部分,我调查了Android应用程序的内存泄露问题,并发现这些内存泄露大多数都是由于相同的错误导致的,即: 对Context拥有较长时间的引用。 在Android上,Context常用于许多操作,更多的时候是加载和访问资源。这就是为什么所有的Widget在它们的构造函数里接受一个Context的参数。在一个正常的Android应用程序里,你会看到两种Context类型,

Intent 过滤器笔记

▼魔方 西西 提交于 2019-12-26 07:41:09
使用 Intent 过滤器 元素还可指定各种 Intent 过滤器—使用 元素—以声明其他应用组件激活它的方法。 当您使用 Android SDK 工具创建新应用时,系统自动为您创建的存根 Activity 包含一个 Intent 过滤器,其中声明了该 Activity 响应“主”操作且应置于“launcher”类别内。 Intent 过滤器的内容如下所示: 元素指定这是应用的“主”入口点。 元素指定此 Activity 应列入系统的应用启动器内(以便用户启动该 Activity)。 来源: CSDN 作者: 可乐_@吸管 链接: https://blog.csdn.net/nn690960430/article/details/103698633

Android开机启动Activity界面

本秂侑毒 提交于 2019-12-25 18:24:44
1 , 原理 : 当 Android 系统完成 BOOT 阶段之后,就会发送一条名为 ACTION_BOOT_COMPLETED 的广播,我们便可在一个 BroadcastReceiver 中捕获这条广播,然后启动我们的 Activity 或者 Service ,当然要注意的是,我们的 application 必须具有捕获该广播的权限,下面请看具体步骤: 第一步:首先要有一个用于开机启动的 Activity 或者 Service ,这里以系统自己创建的最简单的 Activity 为例进行讲解。 package com.billhoo.study; import android.app.Activity; import android.os.Bundle; public class BootTestActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); } } 弟二步:我们要编写一个 BroadcastReceiver 用以捕获

Android事件分发机制——Touch事件

对着背影说爱祢 提交于 2019-12-24 04:05:27
1. 简介 先来看一个表: Touch 事件相关方法 功能 Activity ViewGroup View public boolean dispatchTouchEvent (MotionEvent ev) 事件分发 Yes Yes Yes public boolean onInterceptTouchEvent (MotionEvent ev) 事件拦截 No Yes No public boolean onTouchEvent (MotionEvent ev) 事件响应 Yes Yes Yes 从表中可以看出,Activity、ViewGroup、View都关心Touch事件,其中ViewGroup的关心的事件有三个:onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent。Activity和View关心的事件只有两个:dispatchTouchEvent、onTouchEvent。也就是说只有ViewGroup可以对事件进行拦截。 Android的UI结构是一个树形结构,树的最顶层(根节点)是Activity内包含的一个ViewGroup,下面有若干个ViewGroup节点,每个节点下面又有若干个ViewGroup节点或者View节点,以此类推。Touch事件的传递和处理与这种结构密切相关

Android Fragment随便写点东西

非 Y 不嫁゛ 提交于 2019-12-24 01:00:35
简介 Fragment是一种可以嵌入在Activity当中的UI片段,用来组建Activity界面的局部模块, 也可以说一个Actiivty界面可以由多个Fragment组成。其行为与Activity很相似, 有自己对应的布局(包含具体的View), 它有自己的生命周期,接收自己的输入事件,并且可以从运行中的activity中添加或移除,一个fragment必须总是嵌入在一个activity中,不能被单独使用,同时fragment的生命周期受activity的影响。 本质上会产生一个FrameLayout,它加载的布局为其子布局。 模块化:不必把所有代码全部写在Activity中,而是把代码写在各自的Fragment中。 可重用:多个Activity可以重用一个Fragment。 可适配:根据硬件的屏幕尺寸、屏幕方向,能够方便地实现不同的布局,这样用户体验更好。 演变 最初: Android 3.0的时候添加了Fragment,android.app.fragement。在3.0及之后的版本可以在Activity中直接使用Fragment。使用getFragmentManager获得FragmentManager。 同时,为了兼容低版本的3.0以前的可以使用Fragment,就要用android.support.v4里面对应的支持库,FragmentActivity

android Notification 的使用(锁定通知栏)

对着背影说爱祢 提交于 2019-12-23 10:20:03
近期一直在研究 android 。并一边研究一边做应用。当中遇到了把程序通知常驻在 Notification 栏,而且不能被 clear 掉(就像android QQ一样)的问题。经过研究实现了其功能。现把 Notification 的使用总结例如以下: Notification 的使用须要导入 3 个类 1 2 3 import android.app.PendingIntent; import android.app.NotificationManager; import android.app.Notification; 代码演示样例及说明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); Notification n = new Notification(R.drawable.chat, "Hello,there!" , System.currentTimeMillis()); n.flags = Notification.FLAG_AUTO_CANCEL; Intent i = new Intent(arg0.getContext(),

Android Notification 通知的使用

自古美人都是妖i 提交于 2019-12-23 10:18:33
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 NotificationManager nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); Notification n = new Notification(R.drawable.chat, "Hello,there!" , System.currentTimeMillis()); n.flags = Notification.FLAG_AUTO_CANCEL; nm.flags=Notification.FLAG_NO_CLEAR; //可以让通知不被删掉 Intent i = new Intent(arg0.getContext(), NotificationShow. class ); i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK); //PendingIntent PendingIntent contentIntent = PendingIntent.getActivity( arg0.getContext(), R.string.app_name, i, PendingIntent.FLAG

LocalActivityManager的内部机制

一世执手 提交于 2019-12-22 17:50:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> LocalActivityManager内部机制的核心在于,它使用了主线程对象mActivityThread来装载指定的Activity。注意,这里是装载,而不是启动,这点很重要。 所谓的启动,一般是指会创建一个进程(如果所在应用进程还不存在)运行该Activity,而装载仅仅是指把该Activity作为一个普通类进行加载,并创建一个该类的对象而已,而该类的任何函数都没有被运行。 LocalActivityManager提供了一个重要方法startActivity(),该方法正是利用主线程mActivityThread去装载指定的Activity,其执行过程如图10-25所示。 Manager对象必须已经被初始化,初始化的工作是在dispatchCreate()方法中首先被完成的,而这又是在ActivityGroup类中的onCreate()中被调用的。也就是说,LocalActivityManager的startActivity()方法必须在所在的Activity的onCreate()方法执行完毕后被调用。 判断目标Activity是否包含在该Manager中。Manager中使用两个列表变量保存已经装载过的Activity对象,分别是mActivities和mActivityArray