精华内容
下载资源
问答
  • appium startActivity使用方法

    千次阅读 2019-11-20 14:21:49
    appium startActivity使用方法1.构造方法2.要开启的Activity 1.构造方法 说明:构造方法的二个参数,请使用aapt dump badging a.apk获取到的参数,如果指定其它Activity会报Permission Denial: starting Intent { ...

    appium startActivity使用方法

    1.构造方法

    说明:构造方法的二个参数,请使用aapt dump badging a.apk获取到的参数,如果指定其它Activity会报Permission Denial: starting Intent { flg=0x10000000等类型的错误

    Activity activity = new Activity("微信包名", "微信的主Activity");
    

    2.要开启的Activity

    一般一个安卓应用有很多Activity,那么程序启动后,将初始化到你所指定的Activity中

    activity.setAppWaitActivity("微信包名");
    activity.setAppWaitPackage("你想打开的微信其它Activity");	
    driver.startActivity(activity);	
    

    以上是使用的Appium 6.0 jar包

    展开全文
  • 本文实例讲述了Android编程四大组件之Activity用法。分享给大家供大家参考,具体如下: 这里详细介绍如何创建Activity、生命周期、内存管理、启动模式。 创建Activity 一.定义Activity 1. 定义Activity 定义类继承...
  • Activity 使用方法详解

    千次阅读 2020-09-21 21:00:00
    和你一起终身学习,这里是程序员Android经典好文推荐,通过阅读本文,您将收获以下知识点:一、Activity 概览二、Activity 生命周期三、Activity 的注册方法四、A...

    和你一起终身学习,这里是程序员Android

    经典好文推荐,通过阅读本文,您将收获以下知识点:

    一、Activity 概览
    二、Activity 生命周期
    三、Activity 的注册方法
    四、App的MainActivity
    五、Activity 的启动方法
    六、Activity结束方法
    七、Activity状态保存,恢复的方法
    八、面试中经常问到题型

    一、Activity 概览

    ActivityAndroid最基本的四大组件之一(Activity 活动,Service 服务,ContentProvider内容提供者,BroadcastReceiver 广播),Activity主要负责与用户进行交互,是每位Android开发必须掌握的知识点。四大组件必须在AndroidMainfest.xml 文件中声明。

    Activity 继承关系如下:

    java.lang.Object
       ↳    android.content.Context
           ↳    android.content.ContextWrapper
               ↳    android.view.ContextThemeWrapper
                   ↳    android.app.Activity
    

    理解完Activity的继承关系后,我们开始了解Activity的声明周期,Activity的生命周期直接影响到与用户的交互,此生命周期很重要。

    二、Activity 生命周期

    Activity 生命周期图如下:

    Activity 生命周期图


    在代码中Activity生命周期回调方法如下:

        // Activity 创建方法
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Log.i(TAG, "----onCreate----");
            setContentView(R.layout.activity_methods);
        }
    
        // Activity 在最新任务列表中打开时候会走此方法
        @Override
        protected void onRestart() {
            super.onRestart();
            Log.i(TAG, "----onRestart----");
        }
    
        // Activity 在onCreate 或者 onRestart之后执行
        @Override
        protected void onStart() {
            super.onStart();
            Log.i(TAG, "----onStart----");
        }
    
        // 正在与用户交互的界面
        @Override
        protected void onResume() {
            super.onResume();
            Log.i(TAG, "----onResume----");
        }
    
        // 被其他与用户交互的Activity 部分覆盖
        @Override
        protected void onPause() {
            super.onPause();
            Log.i(TAG, "----onPause----");
        }
    
        // 被其它与用户交互的Activity 全部覆盖
        @Override
        protected void onStop() {
            super.onStop();
            Log.i(TAG, "----onStop----");
        }
    
        // Activity 销毁时候调用此方法
        @Override
        protected void onDestroy() {
            super.onDestroy();
            Log.i(TAG, "----onDestroy----");
        }
    
    

    根据不同的生命周期状态,Activity可以分为以下四种生命周期状态

    • 1.Active 运行状态

    • 2.Pause 暂停状态

    • 3.Stop 停止状态

    • 4.Killed 消亡状态

    三、 Activity的注册方法

    Activity是四大组件之一,Android规定四大组件必须在AndroidMainfest.xml 中注册,Activity如果不注册,则会引起 App Crash。比如以下常见的ActivityNotFoundException

    例如以下ActivityNotFoundException报错信息:

    
    //提示未在 AndroidMainfest.xml 中找到Activity类的声明
    android.content.ActivityNotFoundException:
                               Unable to find explicit activity class 
                               //具体类名,包名如下:
                              {com.wj.utils/com.wj.utils.basewidget.BaseButtonMethods};
                              //需要在AndroidManifest 中声明
                              have you declared this activity in your AndroidManifest.xml?       
                                                
    

    ActivityNotFoundException 异常Log 分析 

    因此,我们在使用Activity的时候必须在AndroidMainfest.xml中注册,注册方法如下:

    <manifest ... >
      <application ... >
          <activity android:name=".BaseButtonMethods" />
          ...
      </application ... >
      ...
    </manifest >
    

    四、App的MainActivity

    一个App会有多个Activity,那么我们如何知道哪个Activity是 Main Activity呢?
    其实Android 是通过android.action.MAIN 标签来区别当前App的入口 Main Activity类。

    另外 一半跟随着android.action.MAIN标签的地方,同时还有
    android.intent.category.LAUNCHER这个标签,它表示 此Action 会被Launcher扫描到,并可以显示在Launcherapp list列表中。如果去掉此Action标签,则无法在Launcher中查看到此app的图标。

    常见举例如下:

    <activity android:name=".MainActivity">
           <intent-filter>
             <action android:name="android.intent.action.MAIN" />
             <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
    </activity>
    

    五、Activity 的启动方法

    Activity 的启动方法大致分显示启动、隐式启动、带返回参数启动三种。

    1. 显示启动

    显示启动常用于app 内部Activity 的启动,使用方法如下:

    
            Intent intent = new Intent(ActivityMethods.this, OtherActivity.class)
            startActivity(intent);
    
    

    2. 隐式启动

    隐式启动即可以调用App内部Activity ,也可以调用其他过滤到包含启动Action 的Activity。使用方法如下:

    
            Intent intent = new Intent("string_action");
            //或者分开设置Action也可以
            // intent.setAction("string_action");
            startActivity(intent);
    
    

    3. 启动带返回值的Activity

    开发过程中我们经常需要启动一个Activity ,然后返回一些数据给启动的Activity,这时候,使用以下启动带返回值的Activity 是最合适的方法。使用方法举例如下:

    • 1.启动要返回数据的Activity

        ... ...
       // 1.启动要返回数据的Activity
        Intent intent = new Intent();
        intent.setClass(ActivityMethods.this, OtherActivity.class);
        startActivityForResult(intent, mRequestCode);
        ... ...
    
        //    2.获取并处理 启动返回Activity 返回结果携带的数据
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == mRequestCode && resultCode == mResultCode) {
                String result = data.getStringExtra("str_set_result");
                Toast.makeText(this, "result :" + result, Toast.LENGTH_SHORT).show();
            }
    
        }
    
    
    • 2. 设置并返回 Bundle 数据类型的数据给启动的Activity

    
                    int resultCode = 101;
                    Intent intent = new Intent();
                    intent.putExtra("str_set_result", "带返回结果的Activity");
                    setResult(resultCode, intent);
    
    

    六、Activity结束 方法

    如果想结束掉当前Activity ,可以调用一下方法

    
            //1.直接调用finish方法 ,结束当前Activity
            finish();
            //2.根据请求码结束Activity
            finishActivity(int requestCode);
    
    

    七、 Activity状态保存,恢复的方法

    Activity异常退出时候,Activity会自动保存一些数据。为了安全起见,如果是App重要的数据,还请在代码中手动保存Bundle类型的数据,防止Activity自动保存的数据没有保存完整。

    Activity 状态保存与恢复的周期图如下:

    Activity 状态保存生命周期图

    代码中 Activity状态保存与恢复的回调方法如下:

    
        // Activity 恢复数据的方法,经常在 oncreate 方法中恢复数据
        @Override
        protected void onRestoreInstanceState(Bundle savedInstanceState) {
            super.onRestoreInstanceState(savedInstanceState);
            Log.i(TAG, "----onRestoreInstanceState----");
        }
    
        // Activity 保存数据的方法,经常在 onPause 方法中保存数据
        @Override
        public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
            super.onSaveInstanceState(outState, outPersistentState);
            Log.i(TAG, "----onSaveInstanceState----");
        }
    
    

    八、 面试中常问的题型

    1. Activity A 启动 Activity B, 然后再返回A,简述一下 A与B生命周期的调用方法。

    • 1.首先A启动的生命周期如下:

    01-02 21:25:22.357 21225-21225/com.android.program.programandroid I/ActivityMethods wjwj:: ----onCreate----
    01-02 21:25:22.396 21225-21225/com.android.program.programandroid I/ActivityMethods wjwj:: ----onStart----
    01-02 21:25:22.402 21225-21225/com.android.program.programandroid I/ActivityMethods wjwj:: ----onResume----
    
    • 2.点击A中的Button ,跳转到B,此时声明周期关系如下:

    01-02 21:28:30.617 23845-23845/com.android.program.programandroid I/ActivityMethods wjwj:: ----onPause----
    01-02 21:28:30.723 23845-23845/com.android.program.programandroid I/OtherActivity wjwj:: ----onCreate----
    01-02 21:28:30.729 23845-23845/com.android.program.programandroid I/OtherActivity wjwj:: ----onStart----
    01-02 21:28:30.738 23845-23845/com.android.program.programandroid I/OtherActivity wjwj:: ----onResume----
    01-02 21:28:31.320 23845-23845/com.android.program.programandroid I/ActivityMethods wjwj:: ----onStop----
    
    • 3.结束B,返回 A,生命周期如下:

    01-02 21:29:38.646 23845-23845/com.android.program.programandroid I/OtherActivity wjwj:: ----onPause----
    01-02 21:29:38.668 23845-23845/com.android.program.programandroid I/ActivityMethods wjwj:: ----onRestart----
    01-02 21:29:38.672 23845-23845/com.android.program.programandroid I/ActivityMethods wjwj:: ----onStart----
    01-02 21:29:38.674 23845-23845/com.android.program.programandroid I/ActivityMethods wjwj:: ----onResume----
    01-02 21:29:39.058 23845-23845/com.android.program.programandroid I/OtherActivity wjwj:: ----onStop----
    01-02 21:29:39.059 23845-23845/com.android.program.programandroid I/OtherActivity wjwj:: ----onDestroy----
    

    总结:
    Activity A启动 Activity B, 简述一下其生命周期?大致流程如下图:

    Activity A 启动 Activity B, 然后再返回A生命周期大致图

    至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除。同时感谢您的阅读,期待您的关注。

    展开全文
  • 常见Android Start Activity用法汇总

    千次阅读 2013-06-16 16:19:10
    //Calls another activity, by name, without passing data Intent iExp = new Intent(this, ActivityToCall.class); //TODO Replace 'ActivityToCall' with the class name of the activity being called st
    //Calls another activity, by name, without passing data
    
    Intent iExp = new Intent(this, ActivityToCall.class); //TODO  Replace 'ActivityToCall' with the class name of the activity being called
    
    startActivity(iExp);

     

    //Calls another activity, by action and category, without passing data
    //refer to AndroidManifest.xml<intent-filter> when determining the action and category of the activity to call
    Intent iImp = new Intent("actionName"); //TODO Replace 'actionName' as appropriate for your action (for example, Intent.ACTION_EDIT)
    iImp.addCategory("categoryName"); //TODO Replace 'categoryName' as appropriate for your category (for example, Intent.CATEGORY_DEFAULT)
    startActivity(iImp);	
     
    //Calls another activity, identified by action and category, passing data URL and a MIME type
    //The class calling the snippet code must implement the following method:
    //protected void onActivityResult (int requestCode, int resultCode, Intent data) {}
    Intent iImp = new Intent();
    iImp.setAction("actionName"); //TODO Replace 'actionName' as appropriate for your action (for example, Intent.ACTION_EDIT)
    iImp.addCategory("categoryName"); //TODO Replace 'categoryName' as appropriate for your category (for example, Intent.CATEGORY_DEFAULT)
    //optional - set data and MIME type for the intent
    iImp.setDataAndType(Uri.parse("http://com.example.project/folder"), "text/plain"); //TODO Change URL and MIME type as appropriate
    startActivityForResult(iImp, 0); //TODO The second parameter (here, zero) is the request code to be used in onActivityResult(); change this parameter to an appropriate value for your activ
    展开全文
  • Activity详解—— Activity基本用法

    千次阅读 2018-05-17 14:45:22
    Activity详解—— Activity基本用法 Activity的xml配置 Activity使用时候必须在xml中设置,否则在启动Activity时候会找不到当前的类。下面配置是常用的作为程序入口的Activity配置。如下设置后,点击应用启动...
    Activity的xml配置

    Activity在使用时候必须在xml中设置,否则在启动Activity时候会找不到当前的类。下面配置是常用的作为程序入口的Activity配置。如下设置后,点击应用启动图标,第一个启动的就是当前Activity。

            <activity
                android:name=".MainActivity"
                android:configChanges="orientation|keyboardHidden|screenSize"
                android:screenOrientation="portrait"
                android:theme="@style/horizontal_slide">
                <!--intent消息过滤用来,此处标记用来接收系统的启动请求-->
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    启动一个Activity

    一般情款下,Activity使用intent启动,启动方法如下:

    Intent intent = new Intent(MyActivity.this, MyOtherActivity.class);
    startActivity(intent);

    除此以外,Activity还有隐式启动的方式:

    隐式Intent是一种让匿名应用程序组件服务动作请求的机制。创建一个新的隐式Intent时,你要指定要执行的动作,以及这个动作所需要的数据。然后手机上能够执行此动作的应用回来响应这个动作。

    当你使用这个新的隐式Intent来启动Activity时,Android会在运行时解析它,找到最适合在指定的数据类型上执行动作的类。这意味着,你可以创建使用其它应用程序的工程,而不需要提前精确地知道你会借用哪个应用程序的功能。

    //Activity会在运行时候解析,调用所有能够执行这个动作的程序。这里启动的是一个打电话程序
    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(“tel:555-2368”));
    startActivity(intent);
    Activity简单生命周期

    Activity的常用生命周期包括以下几个:

    • onCreate():Activity创建时候调用。生命周期第一个方法,一般做一些初始化操作。
    • onStart():表示Activity正在启动,当前Activity处于可见状态,但还不可交互(编辑)。
    • onResume():表示Activity已经可以编辑,Activity处于可交互状态。
    • onRestart():一个未被销毁的Activity重新显示出来时候回回调这个方法。一般是调用顺序会是:onRestart()->onStart()->onResume()
    • onPause():当Activity市区焦点(不可编辑)时调用,一般情况下onStop方法会紧接着被回调。
    • onStop():一般在onPause方法执行完成直接执行,表示Activity即将停止或者完全被覆盖(Stopped形态),此时Activity不可见,仅在后台运行
    • onDestory():Activity正在被销毁,也是生命周期的最后一个方法。
    • onNewInstent():非默认模式时,启动一个已存在的Activity时候,会先调用这个方法。需要在此方法中更新intent,否则getIntent()会一直获取旧的intent。
    Activity的启动方式

    在一下基础的android岗位中,android中有哪些常见的启动方式,是面试的常见问题之一。现在我总结下:

    android有如下四种启动方式,他们所对应的状态如下:

    • singleTop

      如果一个Activity已经存在,并且处于任务栈的栈顶。那么再启动这个Activity时不会创建新的实例,而是直接调用当前Activity的onNewIntent()方法,启动。

      具体的生命周期是onNewIntent()->onResume()

    • singleTask

      栈内唯一的启动方式。如果任务栈中已经存在当前Activity,那么直接启动当前Activity,不创建新的实例。同事在当前Activity栈之上的Activity会被移除。可以用来设置主页面。每次返回首页时候,结束所有Activity。

      具体生命周期调用是onNewIntent()->onRestart()->onStart()->onResume()

    • singleInstance

      在一个新的栈中打开一个Activity。可以用来共享Activity。如在一个应用中创建了一个Activity,然后在另一个应用中页可以再以这个模式建立这个Activity时,不会重复创建。

      具体生命周期调用是onNewIntent()->onRestart()->onStart()->onResume()

    • standard(默认)

      默认的模式,每次新建Activity时候都会在栈中加入一个Activity。

      具体生命周期调用是onCreate()->onStart()->onResume()

    Activity之间值传递
    • 启动Activity时通过intent传值。

      启动Activity时候传值:

      Intent intent = new Intent(context,OtherActivity.class);
      intent.putExtra("key","value");
      context.startActivity(intent);

      在OtherActivity中获取所传值:

      String value = getIntent().getStringExtra("key");
    • 在Activity的onActivityResult()方法中获取回传的值。

      通过startActivityForResult()方法启动Activity

      //此处设置的请求码为111
      startActivityForResult(new Intent(context,OtherActivity.class),111);

      在当前Activity重写onActivityResult()方法获取回传值:

        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            //如果请求码相符,且返回值为正确值,则取值
            if (requestCode == 111 && resultCode == Activity.RESULT_OK) {
                data.getStringExtra("key");
            }
        }
    展开全文
  • Activity

    万次阅读 2017-12-04 15:02:15
    Activity 本文内容 创建 Activity 实现用户界面在清单文件中声明 Activity 启动 Activity 启动 Activity 以获得结果 结束 Activity管理 Activity 生命周期 实现生命周期回调保存 Activity ...
  • Activity用法

    千次阅读 2017-06-11 16:10:22
    Activity有如下两个方法: 1:startActivity(Intent intent): 2:startActivityForResult(Intent intent , int resquestCode): 关闭 Activity有如下两种方法 1:finish(); 2:finishActivity(int ...
  • Activity使用总结

    千次阅读 2016-09-08 22:03:52
    Activity使用总结 作为Android入门级别的组件,Activity在Android的开发中承载了太多的东西,我们的项目开发中少不了与Activity打交道。所以需要我们熟练掌握Activity使用。 总体介绍围绕下面的几个议题进行讨论...
  • 注意实现其中的Override方法,调用子Activity的方式在MyOnPageChangeListener的 onPageSelected中实现 引用OneActivity中的 oneActivityDo(); 及TwoActivity中的 oneActivityDo(); 具体实现就不详细列出了...
  • 主要介绍了Android提高之Activity+Intent用法,是很实用的功能,需要的朋友可以参考下
  • StartActivity的2种用法

    万次阅读 2019-03-12 15:50:24
    startActivity有2种用法 1.显示调用。通过指明ComponentName,显示调用Activity,若 Intent intent = newIntent(CustomerService.this, DetailInfo.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ...
  • 主要介绍了Android应用开发中Activity类的用法,包括Activity间的数据传递以及Activity的创建方式等,需要的朋友可以参考下
  • Activity常用方法

    千次阅读 2016-03-12 20:44:02
    Activity在内存中是以栈的形式被管理的,启动一个新的Activity会压入栈顶,旧的Activity就会进入onPause状态,如果此时按返回键就会返回旧的Activity并调用其onResume()方法,被弹出栈顶的新activi
  • Activity的基本用法

    千次阅读 2017-05-30 19:22:36
     在onCreate方法中,加载布局之前添加代码  requestWindowFeature(Window.FEATURE_NO_TITLE);  这段代码意思就是不在activity中显示标题栏 2.在activity中创建菜单  创建menu文件夹  在menu文件夹中创建...
  • Fragment和FragmentActivity使用方法

    千次阅读 2012-09-17 17:20:23
    认识:首先我们知道Fragment是我们在单个Activity上要切换多个UI界面,显示不同内容。模块化这些UI面板以便提供给其他...一、使用方法: 1、创建一个或者多个你需要的Fragment类,其实就是类似activity一样,
  • 转自:... 在Android中,有时候我们需要在当前的Activity结束掉堆栈中其他的Activity,比如:Activity A,B,C,D 在堆栈中的顺序如下: A-&gt;B-&gt;C-&gt;D,假如我们现在处于Activity D...
  • Activity缓存方法

    千次阅读 2015-11-14 10:14:20
    有a、b两个Activity,当从a进入b之后一段时间,可能系统会把a回收,这时候按back,执行的不是a的onRestart而是onCreate方法,a被重新创建一次,这是a中的临时数据和状态可能就丢失了。 可以用Activity中的...
  • Activityz调用另一个Acitivity中的方法与变量
  • 具体到每一种来说,实现上是很简单,但实际使用过程中还是会有一些难以理解,或容易出错的地方。本系列会全面讲解Activity跳转动画所有的官方实现方式,并分析其中的一些常见问题。 本文介绍...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 457,101
精华内容 182,840
关键字:

activity用法