配置docBase值为:docBase="app"或者docBase="app.war"; 2. path为空,表示app为tomcat默认应用; 同时,将app.war部署在CATALINA_HOME...1.如果在部署app时删除了CATALINA_HOME/webapps/路径下的ROOT目录(即删除tomcat默认应用), 那么在tomcat启动时,会首先在CATALINA_HOME/webapps...从tomcat的启动日志可以很容易知道,在这种情况下app应用会被加载2次,一次是部署ROOT时加载的,另一次是部署app本身加载的。...此时在tomcat启动时,会先部署ROOT默认应用(注意:已经存在ROOT应用,不再会拷贝app.war文件内容到ROOT下)。然后解压app.war,部署app应用。显然,app应用只被部署一次!...因此,在这种情况下,即便配置了元素的path为空,但是访问app应用时还是必须携带应用上下文路径,即:http://host:port/app/xxx。
Android getActivity()为空的问题解决办法 在开发项目中有时会碰到getActivity函数为空的情况, 导致apk空指针崩溃问题, 看代码逻辑没有明显的原因。...fragment的状态, 再次打开该Activity时, 在onCreate方法里取出bundle里的fragment状态, 但这时fragment对应的Activity早就不在了, 所以getActivity为空...= null) { savedInstanceState.remove("android:support:fragments"); //注意:基类是Activity时参数为...android:fragments, 一定要在super.onCreate函数前执行!!!...getActivity()为空的问题解决办法的讲解,如有疑问请大家留言或到本站社区讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
调用时机 当系统 未经你许可 时,可能 销毁了你的Activity,则会被系统调用 。...("MyInt", 1); savedInstanceState.putString("MyString", "Welcome back to Android"); //...activity重新创建的时候自动的恢复(只有在为该UI提供了唯一ID后才起作用) 若需复写该方法从而存储额外的状态信息时,应先调用父类的onSaveInstanceState()(因为默认的onSaveInstanceState...调用时机 当系统“未经你许可”时,确实销毁了你的Activity,则重新启动时会被系统调用 特别说明: 与onSaveInstanceState()区别:此处是 “确实销毁”后才调用 若是 被用户主动销毁...下一篇文章我将对讲解Android 的相关知识。
4.Activity启动模式 Android的启动模式一共有4种,默认情况我们使用的是标准模式。...1.2 远程服务(Remote Service) > 该服务是独立进程,对应进程名格式为所在包名加上指定的 android:process 字符串。...和bindService启动 停止服务应同时使用 stopService 与 unbindservice 4 本地服务的启动方式 4.1 第一种 通过start方式开启服务: 使用service的步骤...: 定义一个类继承 service manifest.xml文件中配置 service (当然as一键创建不用配置) 使用context的startService(Intent)方法启动服务 不使用时...,根据 Android 的内存管理策略,在系统内存紧张的时候,会按照优先级,结束优先级低的线程,而空线程无异是优先级最低的,这样就可能导致 BroadcastReceiver启动的子线程不能执行完成。
Activity作为Android的四大组件之一,非常的重要,也是最常用的四大组件,使用Activity必须要在AndroidManifest中进行注册,那么作为Android的基础,Activity的生命周期你是否完全掌握了呢...调用时机:当用户按下HOME键时、长按HOME键,选择运行其他的程序时、按下电源按键(关闭屏幕显示)时、从activity A中启动一个新的activity时、屏幕方向切换时,例如从竖屏切换到横屏时。...如果没有状态信息需要恢复,则传递给您的Bundle是空值(如果是首次创建该 Activity,就会出现这种情况)。...onStop之前,但是和onPause 的调用时序就不一定了,有可能在onPause之前或者之后。...您只需为想要保存其状态的每个小部件提供一个唯一的 ID(通过 android:id 属性)。如果小部件没有 ID,则系统无法保存其状态。
Android启动画面是启动应用程序时用户可见的第一个屏幕。 闪屏是应用程序中最重要的屏幕之一,因为它是用户对应用程序的首次体验。...让我们MainActivity.java保持MainActivity.java空。...我们将以下样式设置为活动的主题。...splash_background The SplashActivity.java file should look like this: SplashActivity.java文件应如下所示...这结束了android启动画面教程。 您可以从下面的链接下载最终的Android Splash Screen Project。
AndroidManifest文件中含有如下过滤器的Activity组件为默认启动类当程序启动时系统自动调用它 BroadcastReceive广播接收器: 你的应用可以使用它对外部事件进行过滤只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响 应。...BroadcastReceiver 就先结束了 .BroadcastReceiver 一旦结束 , 此时 BroadcastReceiver 的所在进程很容易在系统需要内存时被优先杀死 , 因为它属于空进程.../person, * 那么返回的MIME类型字符串应该为"vnd.android.cursor.dir/person" * 如果操作的数据为单一数据,那么返回的类型字符串应该为...vnd.android.cursor.item/开头 * 例如要得到id为10的person记录的Uri为content://com.bravestarr.provider.personprovider
有时候由于测试不充分或者程序潜在的问题而导致程序异常崩溃,这个是令人无法接受的,在android中怎样捕获程序的异常崩溃,然后进行一些必要的处理或重新启动 应用这个问题困恼了我很久,今天终于解决了该问题...首先捕获程序崩溃的异常就必须了解一下java中UncaughtExceptionHandler这个接口,android沿用了此接口,在android API中: ?...UncaughtExceptionHandler时,必须重载uncaughtException(Thread thread, Throwable ex) ,如果我们没有实现该接口 也就是没有显示捕捉异常,则ex为空...,否则ex不为空,thread 则为出异常的线程。...但是我怎样试都不成功, 进程是杀死了,但是应用却没启动起来,如果不将异常进程杀死,那么关闭应用时就得关闭两次,显然不能够接受。
举例而言,如果新启动的 Activity 覆盖整个屏幕,就可能会发生这种情况。 在 onStop() 方法中,应用应释放或调整应用对用户不可见时的无用资源。...但需要注意的是,在 onCreate 取出数据时一定要先判断savedInstanceState 是否为空。...不需要加非空判断,而 onCreate 需要非空判断。...该模式下会把栈中位于要启动的Activity上面的Activity都出栈。 12. onNewIntent()调用时机?...有两个调用时机,分别是singleTop模式下与singleTask模式下启动Activity。
参数event:参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置、触摸的类型以及触摸的时间等。该对象会在用户触摸手机屏幕时被创建。...Activity第一启动的时候执行onCreate()---->onStart()---->onResume()等后续生命周期函数,也就时说第一次启动Activity并不会执行到onNewIntent(...如果android系统由于内存不足把已存在Activity释放掉了,那么再次调用的时候会重新启动Activity即执行onCreate()---->onStart()---->onResume()等。...onSaveInstanceState / onRestoreInstanceState调用时机 onSaveInstanceState调用时机:当Activity变得“容易”被系统销毁时,onSaveInstanceState...参考链接 Android总结篇系列:Activity中几个主要函数详解
版权声明:本文为博主原创文章,未经博主允许不得转载。...这是Android启动应用时,activity将要走过的路线。和之前我学到的Activity图有所出路。 ? 这两张图都描述了activity的行走路线,我个人更喜欢第一张图。...initialize members with default values for a new instance } ... } 这里需要注意的一点是:savedInstanceState判空的细节...,因为程序很有可能正常退出,因此savedInstanceState,在app创建一个新的实例时,定为空。...当然,我们也可以选择更加方便的方法,无需判空,重写onRestoreInstanceState方法即可: public void onRestoreInstanceState(Bundle savedInstanceState
对于BackgroundThread 一一对应 这里有两个线程,UI主线程和后台线程, 这个后台线程 专门用来 处理onEventBackgroundThread方法及其对应的事件的; 也就是说...我们可以观察到两对Start和End是顺序执行的; 执行时候没有交叉,先第一对,后第二对; 这里也便验证了以上理论—— 即, 一一对应,一个post对应一个event, event顺序执行,...前post者对应的event执行中, 则后post者对应的event等待阻塞; 其实把代码改成MainThread的, 再运行,连续点击三次, 同样是能体现一一对应,顺序执行,前者执行,后者等待阻塞的特性...使用技巧 事件只需要传递一个状态 / 指令,无需传递数据时, event自定义类内容可以为空; 比如一个只需要传递“清空位置信息列表”这个指令的事件, 可以这么定义: ?...就是定义一个Event类,但是内容为空; 即 无需传递数据, 仅仅event类的类名已经具备传递的事件、指令意义; 一个Fragment或者Activity需要接收处理多个Event时候,
onSaveInstanceState的调用时机 onSaveInstanceState函数是Android针对可能被后台杀死的Activity做的一种预防,它的执行时机在2.3之前是在onPause之前...对于startActivity函数的调用很多文章都有介绍,可以简单参考下老罗的博客Android应用程序内部启动Activity过程(startActivity)的源代码分析,比如在Activity A...= null) { savedInstanceState.putParcelable(“android:support:fragments”, null);} super.onCreate...(savedInstanceState); } 如果是系统的Actvity改成是“android:fragments",不过这里需要注意:对于ViewPager跟FragmentTabHost不需要额外处理...protected void onRestoreInstanceState(Bundle savedInstanceState) { } 当然以上的做法都是比较粗暴的做法,最好还是顺着Android的设计
Service可以分为以下两种类型: Started(启动):当Activity通过startService()方法启动服务时,服务处于started状态。一旦启动,就算组件被销毁也不会停止。...在onStartCommand()或onBind()之前 onDestory():当服务不再使用时销毁 一、Started Service 1.继承IntentService类 IntentService...也就是自动生成的return语句不能改 2.继承Service类 使用IntentService将简化启动服务的实现,但如果要处理多线程,则可以继承Service来处理各个Intent 对于每次启动的请求...使用空Intent调用onStartCommand() START_REDELIVER_INTENT:停止服务,重新创建服务并使用最后的Intent调用onStartCommand() 二、Bound...会导致更加复杂的实现 1.继承Binder类 如果服务仅用于本地应用程序并且不必跨进程工作,那么可以实现自己的Binder类来为客户端提供访问的方式 实现步骤如下 (1)在服务中创建Binder类实例来完成下列操作之一
则App判断为第一次启动。接下来使用Intent,根据值,则开启了引导页即 GuideActivity 。 引导页 页面如下:guide_view.xml <?...这里我为ViewPager的切换添加了切换动画。使用的 Google 官方文档上列出的两种动画效果。...-- 设置按钮的四个角为弧形 --
翻译:如果在通过Context.startActivity()启动activity时为Intent设置了此标识,这个标识将导致:在此activity启动之前,任何与此activity相关联的task都会被清除...也就是说,此 activity将变成一个空栈中新的最底端的activity,所有的旧activity都会被finish掉,这个标识仅仅和FLAG_ACTIVITY_NEW_TASK联合起来才能使用。...{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState...{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState...class ActivityB extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {
: TextView tv = view.findViewById(R.id.tv); return builder.create(); } PS:创建 Dialog 的方式有多种,比如下面这种,使用时略有差异...方法 ① 在使用了多线程(例如网络请求)的情况下,不能正确的获取当前 Fragment 的状态,会产生空指针异常。...{ title.setText("Value B"); } } } 如果在网络请求未结束或者刚结束时关闭了当前 DialogFragment ,代码 19 行就会报空指针异常了...更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android调试技巧与常见问题解决方法汇总》、《Android基本组件用法总结》、《Android视图...View技巧总结》、《Android布局layout技巧总结》及《Android控件用法总结》 希望本文所述对大家Android程序设计有所帮助。
开发实例-拨打电话,text阅读器和图片查看器 下面通过一个例子来演示data的检测,项目名为Intents,应用名为Intents and Filters,运行在Android2.2版本上.主启动Activity...为IntentsTestList。...Activity * @param isActivity 启动的是否是Activity,true是,false为广播 */ private void addItem(List...如果B为空(不配置data),那么A也得为空(不配置data)才能通过 。...Intent是一个很好的设计,它提供了一种在各个组建之间通信的方式,也为我们使用其他的应用的功能提供了可能,这样如果我们想在自己的应用打开一个网页,我们就不用特意迁入一个webview,我们直接调用Android
; setViewList(List views, long delayTime):设置跑马灯View列表,间歇时间为传入的时间,单位为毫秒; startTimer():开始倒计时,与stopTimer...()配套使用; stopTimer():停止倒计时,与startTimer()配套使用; 使用时直接调用setViewList方法,即可开始倒计时。...) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);...viewDesc.setText(desc); return view; } } 最后修改于2019年5月20日,修改点如下: 修复因getCurrentView方法与父类方法重名导致被调用时出现空指针异常...开始启动轮播动画和addView操作添加到post的Runnable里面,为避免在页面未显示前调用导致的异常。这样可以放心在任意地点调用setViewList方法。 赶紧试试吧,祝你成功!!!
,默认重写onCreate(Bundle savedInstanceState),用于初始化Activity onStart():启动Activity时被回调 onRestart():重新启动Activity...时被回调,总是在onStart()以后执行 onPause():暂停Activity时被回调 onResume():当Activity由暂停状态恢复为活动状态时。...; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState...onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG, "onStop"); } } (1)打开应用时...(4)当我们再次启动ActivityDemo应用程序时,看一下LogCat ? 正好对应: ?
领取专属 10元无门槛券
手把手带您无忧上云