zoukankan      html  css  js  c++  java
  • android:两个应用之间怎样传值之activity

    版权声明:本文为博主原创文章。未经博主同意不得转载。 https://blog.csdn.net/zjh171/article/details/37738579

    两个应用之间怎样传值。事实上这个标题太水了,专业的说法是“两个进程间怎样传值”,什么?。还不够专业,好吧,你淫了。“进程间通信”事实上更专业,这回你总惬意了吧!顺带说一下,简写成IPC:Inter-Process Communication。

    兄弟们。如果你们从搜索引擎或者其它途径找到这篇文章的话,说明你的Android技术已经提升到一个非常高的层次了哦,嘿嘿~为什么这么说呢?由于不管哪个平台。线程跟进程都是绝对的重点跟难点。

    本文说的进程间传值仅仅是进程间通信的一个特例,还有其它用处比方,进程控制:让一个进程杀死还有一个进程之类的。当然这个不在本文讨论范围之内,大家不知道也无所谓的。

    做事情要抓住重点跟难点。好比追女生。重点就是一開始不能表现出来。。。一定要以朋友的身份好好相处,等时间成熟就顺利成章了。

    唉,都是本人的亲身经历,大家一定要引以为戒!快哭了

    近期确实蛮郁闷的,一方面技术上没有特别突破。还有一方面朋友又相继离职。搞得我上班没劲,下班没人玩。真慘。

    废话不多说了,開始我们的传值旅程吧。

    首先大家要知道的是,每一个进程都有一段独立的内存空间。所以两个进程之间传值本身就是效率不高,比較耗时的过程。

    线程相较于进程的长处在于共享一段内存,因此传值速度比进程快,最快的当然莫过于同一个线程了。这些知识点是大家了解程序传值的前提。

    linux中进程间传值的方式有例如以下几种:

    管道(pipe)。消息队列,信号。共享内存,套接口。

    android中进程间的通信方法有下面几种:

    activity,content provider,binder。service

    事实上android的进程间通信是建立在linux之上的。尽管名字略有不同。但底层实现还是通过以上四种方式。

    1.Activity实现两个App之间传值

    如果有两个应用APP1和APP2。而且想通过app1中的ActivityA中的某个button或者其它控件的点击事件来启动APP2中的ActivityB。过程例如以下:

    1.将ActivityB暴露出来

    比方如今有一个LoginActivity须要暴露出来。则能够通过改动manifest来实现

    <activity
                android:name="com.saike.android.grape.controller.personal.LoginActivity"
                android:screenOrientation="portrait"
                android:windowSoftInputMode="adjustResize|stateHidden" >
                <intent-filter>
                    <action android:name="zhudows.com" />
    
                    <data android:scheme="info" />
    
                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>

    如图,上面代码的功能我先做个介绍:

    前面几行的我就不多说了,主要是<intent-filter>里面那几句,事实上从名字就能够看出这个标签的作用:用于过滤intent。那么intent是啥,我相信也不用多说了,intent是Activity中传值时不可忽略的类。

    在将上面这段之前我们先看看我们比較熟悉的一段代码:

    <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    这个对我们来说再熟悉只是了,由于我们在写不论什么一个应用的时候都要指明启动应用的activity,此时必须要使用标签action,并赋值他的属性android:name 为 android.intent.action.main

    这个属性值的意思事实上大概就相似是表示程序的“main”函数从这个activity開始。


    然后在我们须要启动这个activity的地方调用方法:

    Intent i =  new Intent("zhudows.com", Uri.parse("info://111"));  

    this.startActivity(i);  

    就可以。




查看全文
  • 相关阅读:
    AtCoder Beginner Contest 205
    Codeforces Round #725 (Div. 3)
    Educational Codeforces Round 110 (Rated for Div. 2)【A
    Codeforces Round #722 (Div. 2)
    AtCoder Beginner Contest 203(Sponsored by Panasonic)
    AISing Programming Contest 2021(AtCoder Beginner Contest 202)
    PTA 520 钻石争霸赛 2021
    Educational Codeforces Round 109 (Rated for Div. 2)【ABCD】
    AtCoder Beginner Contest 200 E
    Educational Codeforces Round 108 (Rated for Div. 2)【ABCD】
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10839489.html
  • Copyright © 2011-2022 走看看