一个重启当前activityy怎么手动重启

2014年1月 移动开发大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。android(21)
在正常的应用程序使用时,前台活动有时通过使所述活动暂停等可视部件阻塞。例如,当一个半透明活性打开(诸如一个在一个对话的方式),在以前的活动暂停。只要活动仍部分可见,但当前未处于焦点中的活动,它保持暂停。
然而,一旦活性完全阻塞和不可见的,它停止(这将在下一课讨论)。
当你的活动进入暂停状态时,系统调用的onPause()方法的活动,它允许你停止不应该继续暂停时(如视频)正在进行的动作或持续存在,应永久保存,以防任何信息用户继续留下您的应用程序。如果用户返回到从暂停状态的活动,系统恢复,并调用onResume()方法。
注意:当你的活动接听电话时,onPause()它可能是一个迹象,该活动将被暂停了一会儿,用户可以将焦点返回到你的活动。然而,这通常是第一个迹象表明,用户正在离开你的活动。
图1.当用户离开你的活动时,系统调用的onStop()停止活动(1)。如果在活动停止用户返回,系统调用onRestart()(2),紧接着ONSTART()(3)和onResume()(4)。请注意,无论什么情况下会导致活动停止,系统()之前调用的onStop总是调用的onPause()。
停止你的活动
当你的活动收到一个调用的onStop()方法,它不再是可见的,应该释放那些在用户不使用它并不需要的几乎所有资源。一旦你的活动停止后,系统可能会破坏。例如,如果需要恢复系统内存。在极端情况下,该系统可能只是杀了你的应用程序,而无需调用该活动的最后的onDestroy()回调,让你用的onStop()释放可能泄漏内存资源,这一点很重要。
虽然在onPause()方法在onStop()调用之前,你应该使用的onStop()来执行更大,更多的CPU关机操作,如将信息写入数据库。
例如,这里的的onStop()的实现,节省了一张字条给永久存储草案的内容:
protected void onStop() {
super.onStop();
// Always call the superclass method first
&//保存注释的目前的草案,因为该活动是停止
& & //我们要确保当前音符的进展不会丢失。
ContentValues values = new ContentValues();
values.put(NotePad.Notes.COLUMN_NAME_NOTE, getCurrentNoteText());
values.put(NotePad.Notes.COLUMN_NAME_TITLE, getCurrentNoteTitle());
getContentResolver().update(
// The URI for the note to update.
// The map of column names and new values to apply to them.
// No SELECT criteria are used.
// No WHERE columns are used.
当你的活动都已停止,活动对象保持驻留在内存中的活动恢复时回忆说。不需要重新初始化过程中的任何的回调方法导致对续状态中创建的组件。该系统还跟踪在布局中的每个视图的当前状态,因此如果用户输入的文字变成一个EditText小部件,这些内容被保留,所以你不需要保存和恢复它。
注:即使系统破坏你的活动,而它停了下来,它仍保留在一个Bundle(键值对的BLOB)查看对象(如一个EditText文本)的状态,并恢复他们,如果用户返回该活动的同一个实例(下一课更多地谈论用包保存,以防您的活动被破坏并重新创建其他状态数据)。
启动/重新启动您的活动
当你的活动回来,从停止状态的前景,它接收调用onRestart()。该系统还调用的OnStart()方法,这恰好每次你的活动变得可见的时间(无论是正在重新启动或首次创建)。该onRestart()方法,但是,被称为从停止状态下的活动恢复,只有当,所以你可以用它来执行只有在以前的活动停止,但不被破坏,可能需要特殊的修复工作。
这是罕见的一个应用程序需要使用onRestart()来恢复活动的状态,所以不会有这种方法适用于应用程序的一般人群的指引。但是,因为你的onStop()方法应该基本上清理所有活动的资源,你需要重新实例化它们的活动重新启动时。然而,你还需要在你的活动是第一次创建实例化它们(当有活动的任何现有实例)。出于这个原因,你通常应该使用ONSTART()回调方法作为对应到的onStop()方法,因为系统调用ONSTART()既当它创建你的活动,并在重新启动时从停止状态的活动。
例如,因为用户可能已经离开你的应用程序很长一段时间回来之前,该ONSTART()方法是一个好地方,以验证功能被启用所需的系统:
protected void onStart() {
super.onStart();
// Always call the superclass method first
//活动要么被重新启动或启动的第一次
& & //所以这是我们应该确保GPS已启用
LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!gpsEnabled) {
//创建这里一个对话框,请求用户启用GPS,并使用意图
& & & & //与android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS行动
& & & & //把用户设置窗口启用GPS时,单击“确定”
protected void onRestart() {
super.onRestart();
// Always call the superclass method first
// Activity being restarted from stopped state
当系统破坏活动,它调用onDestroy()方法,为您的活动。因为你通常应该已经发布了大部分的资源与onStop()的时候,你接到一个电话来onDestroy(),没有太多的大多数应用程序需要做的。这种方法是你最后一次机会来清理资源,可能会导致内存泄漏,所以你应该确保其他线程被破坏和其他长期运行的操作,如方法跟踪也停止。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7886次
排名:千里之外
原创:19篇
(4)(3)(1)(9)(10)4354人阅读
android(78)
为了确保你的用户能感觉到程序一直是活着的,并且没有丢失他们的使用进度,合理的停止和启动你的activity将显得尤为重要。这里有一些场景是需要你的activity停止和重启的:
用户在你的程序中从“正在运行程序窗口”选择切换到其他程序。那么你的程序的activity就会被停止。如果用户从“主屏幕图标”或者“正在运行程序窗口”中选择了你的程序,那么这个activity会被重启。用户在你的程序中执行一个行为启动了一个新的activity。当前activity就会被停止,第二个activity被创建。当用户点击Back按钮时,第一activity被重启。当用户正在使用你的程序时接了一个电话。
Activity提供两个方法onStop()和onRestart()让你在停止和重启时做一些特定操作。和paused状态不一样的是,stopped状态保证了UI界面是不可见的,用户的焦点完全是在另外一个activity中(或者另外一个单独的程序中)。
提示:因为系统在stopped状态中会保存你activity实例在内存中,所以你可能不需要实现onStop()和onRestart()方法(甚至是onStart())。对大多数activity来说都是比较简单的,activity能够很好的停止和重启,你只需要使用onPause()暂停进行中的动作和释放系统资源。
图解:当你用户离开你的activity,系统调用onStop()停止activity(1)。如果从stopped状态返回activity,系统调用onRestart()(2),然后快速的执行onStart()(3)和onResume()(4)。注意,不管是什么场景导致activity的停止,系统都是先调用onPause()然后再调用onStop()。
停止你的Activity
当activity接收一个onStop()函数调用时,activity是不可见的,而且释放几乎所有不需要的资源。一旦activity被停止,系统在恢复系统内存时可能会销毁activity实例。在极少情况下,系统会直接杀掉你的程序进程而不调用activity的onDestroy()函数,所以在onStop()方法中释放资源,防止内存泄露是很重要的。
虽然onPause()在onStop()前被调用,不过你应该使用onStop()执行更大、更多CPU密集的关闭操作。比如写入信息到数据库。
比如,这是保存笔记草稿到永久存储器在onStop()中的实现:
protected void onStop() {
super.onStop();
// Always call the superclass method first
// 保存当前笔记草稿,确保不丢失工作进度。
ContentValues values = new ContentValues();
values.put(NotePad.Notes.COLUMN_NAME_NOTE, getCurrentNoteText());
values.put(NotePad.Notes.COLUMN_NAME_TITLE, getCurrentNoteTitle());
getContentResolver().update(
// The URI for the note to update.
// The map of column names and new values to apply to them.
// No SELECT criteria are used.
// No WHERE columns are used.
当activity被停止后,activity对象被保持在内存中,等待被呼叫恢复到Resumed状态,当恢复时你不需要重新创建activity和初始化组件。系统会保持每个View的当前状态,所以当用户输入内容到EditText时,内容会被自动保存,你不需要手动保存和恢复它。
提示:即使系统在你的activity被停止时销毁它,它仍然保存View对象(比如EditText中的文本)到一个Bundle(一些key-value对)中,在返回activity时恢复这些数据。(我们会在另外的课程中讨论当activity被销毁和重启时使用Bundle保存数据)
启动/重启你的activity
当你从停止状态返回到前台时,会调用onRestart()函数。每次程序可见时系统都会调用onStart()方法(不管是重启还是第一次创建)。当然,onRestart()方法只是当activity从stopped状态恢复时才会调用,所以你可以使用这个方法实现一些特殊的恢复工作,这些工作是恢复停止之前的数据,而不是销毁后的。
一个程序需要使用onRestart()来恢复activity状态是很不寻常的,所以对于常用的程序来说,我们没有关于这个函数的任何教程。不管怎样,因为你本来应该在onStop()方法中清理所有的activity资源,你将要在activity重启的时候从新初始化它们。不过,当你activity第一次创建的时候,你也需要初始化它们。基于这个原因,你通常应该再onStart()方法中匹配onStop()的实现,因为系统启动和重启时都会调用onStart()。
例如,用户可能离开你的程序很久,然后返回来,onStart()函数就是一个验证系统所需功能的最好地方:
protected void onStart() {
super.onStart();
// Always call the superclass method first
// 在这里,activity要么是重启,要么是第一次创建
// 所以在这里确认是否开启GPS。
LocationManager locationManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean gpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!gpsEnabled) {
// 弹出对话框提示用户开启GPS
protected void onRestart() {
super.onRestart();
// Always call the superclass method first
// activity从停止状态重启
当系统消耗你的activity,它会调用onDestroy()函数。因为你已经在onStop()中释放了差不多所有的资源,所以这个方法一般没太多的事情要做。这个方法是清理资源,防止内存泄露的最后方法,所以你必须确保附加的线程已经被销毁,和像函数回溯这些长时间运行的行为已经被停止。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:884335次
积分:7462
积分:7462
排名:第2573名
原创:104篇
译文:101篇
评论:88条
(17)(13)(15)(1)(21)(30)(30)(45)(33)Android Training - 停止和重启一个Activity_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Android Training - 停止和重启一个Activity
来源:Linux社区&
作者:lixiang0522
为了确保你的用户能感觉到程序一直是活着的,并且没有丢失他们的使用进度,合理的停止和启动你的activity将显得尤为重要。这里有一些场景是需要你的activity停止和重启的:
用户在你的程序中从“正在运行程序窗口”选择切换到其他程序。那么你的程序的activity就会被停止。如果用户从“主屏幕图标”或者“正在运行程序窗口”中选择了你的程序,那么这个activity会被重启。
用户在你的程序中执行一个行为启动了一个新的activity。当前activity就会被停止,第二个activity被创建。当用户点击Back按钮时,第一activity被重启。
当用户正在使用你的程序时接了一个电话。
Activity提供两个方法onStop()和onRestart()让你在停止和重启时做一些特定操作。和paused状态不一样的是,stopped状态保证了UI界面是不可见的,用户的焦点完全是在另外一个activity中(或者另外一个单独的程序中)。
提示:因为系统在stopped状态中会保存你activity实例在内存中,所以你可能不需要实现onStop()和onRestart()方法(甚至是onStart())。对大多数activity来说都是比较简单的,activity能够很好的停止和重启,你只需要使用onPause()暂停进行中的动作和释放系统资源。
图解:当你用户离开你的activity,系统调用onStop()停止activity(1)。如果从stopped状态返回activity,系统调用onRestart()(2),然后快速的执行onStart()(3)和onResume()(4)。注意,不管是什么场景导致activity的停止,系统都是先调用onPause()然后再调用onStop()。
停止你的Activity
当activity接收一个onStop()函数调用时,activity是不可见的,而且释放几乎所有不需要的资源。一旦activity被停止,系统在恢复系统内存时可能会销毁activity实例。在极少情况下,系统会直接杀掉你的程序进程而不调用activity的onDestroy()函数,所以在onStop()方法中释放资源,防止内存泄露是很重要的。
虽然onPause()在onStop()前被调用,不过你应该使用onStop()执行更大、更多CPU密集的关闭操作。比如写入信息到数据库。
比如,这是保存笔记草稿到永久存储器在onStop()中的实现:
@Override&&
protected&void&onStop()&{&&
&&&&super.onStop();&&&&
&&&&ContentValues&values&=&new&ContentValues();&&
&&&&values.put(NotePad.Notes.COLUMN_NAME_NOTE,&getCurrentNoteText());&&
&&&&values.put(NotePad.Notes.COLUMN_NAME_TITLE,&getCurrentNoteTitle());&&
&&&&getContentResolver().update(&&
&&&&&&&&&&&&mUri,&&&&&&
&&&&&&&&&&&&values,&&&&
&&&&&&&&&&&&null,&&&&&&
&&&&&&&&&&&&null&&&&&&&
&&&&&&&&&&&&);&&
当activity被停止后,activity对象被保持在内存中,等待被呼叫恢复到Resumed状态,当恢复时你不需要重新创建activity和初始化组件。系统会保持每个View的当前状态,所以当用户输入内容到EditText时,内容会被自动保存,你不需要手动保存和恢复它。
相关资讯 & & &
& (08/17/:39)
& (08/08/:52)
& (08/07/:05)
& (08/10/:18)
& (08/08/:10)
& (08/02/:22)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款android 应用 kill ,restart ,重启,方法
通过拿到当前的进程 id ,调用 shell 命令,杀死进程。
int pid = android.os.Process.myPid();
String command = "kill -9 "+ Process.myPid();
Runtime.getRuntime().exec(command);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
调用的方法 杀死进程,
android.os.Process.killProcess(android.os.Process.myPid());
获得包名,重启应用
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
am.restartPackage("com.android.nfc");
4. 调用系统的接口,退出应用。
System.exit(0);
5. 重启应用的activity
Intent k = mContext.getPackageManager()
.getLaunchIntentForPackage("com.android.nfc");
k.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
mContext.startActivity(k);
6. 应用重启
ActivityManager am = (ActivityManager) mContext.getSystemService(mContext.ACTIVITY_SERVICE);
am.restartPackage("com.android.nfc");

我要回帖

更多关于 禁止activity旋转重启 的文章

 

随机推荐