activity

Anroid 退出所有 activity

∥☆過路亽.° 提交于 2019-12-01 20:48:49
可以利用清理历史栈的方法,来巧妙关闭所有activity, 首先用一个设置为不可见的activity A来启动程序,这个activity A的作用只是用来垫栈底 ,只有启动和退出程序才回用到这个activity,在你需要退出的时候,只要跳转至这个activity A Intent intent = new Intent(); intent.setClass(B.this, A.class); //B为你按退出按钮所在的activity intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //最关键是这句 startActivity(intent); Intent.FLAG_ACTIVITY_CLEAR_TOP使得处于栈底的A发挥推土机的作用,从最底层把栈里所有的activity都清理 掉,再在自己的oncreate方法加一句finish结束自己,即可实现退出。不放心的话,可以在A的ondestroy方法中加上 system.exit(0) ,连跳转过程中的线程也可以终止的。 来源: oschina 链接: https://my.oschina.net/u/251942/blog/60902

android程序完全退出步骤

时光怂恿深爱的人放手 提交于 2019-12-01 20:48:33
方法A: 1.5版本到2.1版本的退出方法是 ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); activityManager.restartPackage("包名"); 2.2版本必须把后台数据清空了: 步骤1: /** * activityList:所有activity对象,用于退出时全部finish; Activity走onCreate时,添加到该集合 */ public static List<Activity> activityList = new ArrayList<Activity>(); 步骤2: /** * 页面初始化 * * @param savedInstanceState */ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); activityList.add(this); 步骤3: /** * 退出客户端。 * * @param context 上下文 */ public static void exitClient(Context context) { Log.d(TAG,

Android 退出Activity的方法

烈酒焚心 提交于 2019-12-01 20:48:07
对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。现提供几个方法,供参考: 1、抛异常强制退出: 该方法通过抛异常,使程序Force Close。 验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出Force Close的窗口。 2、记录打开的Activity: 每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。 3、发送特定广播: 在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。 4、递归退出 在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。 除了第一个,都是想办法把每一个Activity都结束掉,间接达到目的。但是这样做同样不完美。 你会发现,如果自己的应用程序对每一个Activity都设置了nosensor,在两个Activity结束的间隙,sensor可能有效了。 但至少,我们的目的达到了,而且没有影响用户使用。 例如: 1、创建一个Activity的基类,重写startActivity()方法,在里面添加一句finish()。其他的Activity继承这个基类

【Medium 万赞好文】ViewModel 和 LIveData:模式 + 反模式

余生颓废 提交于 2019-12-01 20:37:29
原文作者: Jose Alcérreca 原文地址: ViewModels and LiveData: Patterns + AntiPatterns 译者:秉心说 View 和 ViewModel 分配责任 理想情况下,ViewModel 应该对 Android 世界一无所知。这提升了可测试性,内存泄漏安全性,并且便于模块化。 通常的做法是保证你的 ViewModel 中没有导入任何 android.* , android.arch.* (译者注:现在应该再加一个 androidx.lifecycle )除外。 这对 Presenter(MVP) 来说也一样。 ❌ 不要让 ViewModel 和 Presenter 接触到 Android 框架中的类 条件语句,循环和通用逻辑应该放在应用的 ViewModel 或者其它层来执行,而不是在 Activity 和 Fragment 中。 View 通常是不进行单元测试的,除非你使用了 Robolectric ,所以其中的代码越少越好。 View 只需要知道如何展示数据以及向 ViewModel/Presenter 发送用户事件。这叫做 Passive View 模式。 ✅ 让 Activity/Fragment 中的逻辑尽量精简 ViewModel 中的 View 引用 ViewModel 和 Activity/Fragment

Android自适应屏幕方向和大小

北城余情 提交于 2019-12-01 20:19:56
一:不同的layout Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。 二:hdpi、mdpi、ldpi 在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。   drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:   (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)   (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)   (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)   系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。   在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。 [i]备注:三者的解析度不一样

第七次作业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

Acitivty生命周期

时光总嘲笑我的痴心妄想 提交于 2019-12-01 19:37:51
Acitivty 有七个生命周期: onCreate: 当第一次调用一个Activity就会执行onCreate方法 onStart: 当Activity处于可见状态的时候就会调用onStart方法 onResume: 当Activity可以得到用户焦点的时候就会调用onResume方法,由被覆盖状态回到前台或解锁屏调用此方法。 onRestart: 当Activity没有被销毁的时候重新调用这个Activity就会调用onRestart方法 onPause: 当Activity被遮挡住的时候就会调用onPause方法,暂停当前activity。 onStop: 当Activity处于不可见状态的时候就会调用onStop方法 onDestory: 当Activity被销毁时会调用onDestory方法 环境:一共两个页面,A,B A页面有一个button点击之后打开B页面 activity启动的时候: onCreate ---> onStart ---> onResume ,打开A页面:启动时调用,可见状态调用,获取焦点调用。 点击button后打开B页面此时A页面的状态是: onPause---> onStop, 首先暂停A页面activity,然后对B页面的activity执行上面的三步,然后对A页面进行停止操作。 当按返回键时: onRestart--->onStart---

Running activity from remote service

ⅰ亾dé卋堺 提交于 2019-12-01 18:46:34
iam trying to run an activity from diffrent package from my remote service: this is how i implement the service.java public class CurrencyService extends Service { public class CurrencyServiceImpl extends ICurrencyService.Stub { int CALL_PUSH_SERVICE_ACTIVITY=10; @Override public void callSomeActivity(int activityId) throws RemoteException { Intent pushActivity=new Intent("com.pushservice.PushActivity"); pushActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(pushActivity); } ..... } ive also added a line in the manifest of the service: the service works fine, but i cant run the

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中Activity的切换动画(非overridePendingTransition)

南笙酒味 提交于 2019-12-01 16:56:43
摘自: http://fuyunhe.iteye.com/blog/1834874 我们知道,在Manifest文件中声明Activity时,可以通过android:theme属性设置Activity的主题。主题中定义了关于Activity外观的很多特性。同时,主题中还可以定义Activity的切换动画。通过主题的形式定义的Activity切换动画,甚至可以超越API的限制,在2.0以下的系统版本中依然能够设置Activity切换动画。 下面就一个简单的例子说明怎么定义包含Activity切换动画的主题。 首先,我们先看一下包含动画的主题是怎么定义的。在R.values文件夹中新建一个style.xml的文件,在其中插入一个<style />节点,声明一个主题,代码如下: R.values.style: Xml代码 < style name = "Activity.Theme" mce_bogus = "1" parent = " @android :style/Theme.NoTitleBar" > < item name = "android:windowAnimationStyle" > @style/anim_activity </ item > </ style > 可以看到,以上主题的父主题是 @android :style/Theme.NoTitleBar,