Andrio studio 学习 之 Service进程间通信

2022年Android Studio详细下载,安装使用教程 2022年Android Studio详细下载,安装使用教程的简单示例 阅读详情

Service进程间通信

Service-AIDL进程间通信

https://blog.youkuaiyun.com/qq_34178710/article/details/85012415

Service-Messager实现进程间通信

https://blog.youkuaiyun.com/qq_34178710/article/details/85012427 (代码有异常)

更正
服务端的代码:
MyServer代码

package com.example.message_server;

import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.support.annotation.Nullable;
import android.widget.Toast;

public class MyService extends Service {
    private static final String TAG = "MyService";
    Messenger server_messager=new Messenger(new Handler(){
        @Override
        public void handleMessage(Message msg) {

            //接受客户端消息
            Bundle bundle=msg.getData();
            String message=bundle.getString("client_message");
            Toast.makeText(MyService.this, "服务器发来的消息:"+message, Toast.LENGTH_SHORT).show();
            //向客户端发送消息
            Messenger clientMessager = msg.replyTo;//用于获取客户端的信使
            Message messenge= Message.obtain();
            Bundle bundle1=new Bundle();
            bundle1.putString("server_message","客户端你是不是傻啊");
            messenge.setData(bundle1);
            try {
                clientMessager.send(messenge);
            } catch (RemoteException e) {
                e.printStackTrace();
            }
            super.handleMessage(msg);
        }
    });

    //TODO 返回server_messager的代理人,便于客户端获取服务端信使
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return server_messager.getBinder();
    }
    public MyService() {
    }
}

服务的清单文件

<service
            android:name=".MyService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.feng.1705A"></action>
            </intent-filter>
        </service>

客户端的代码

package com.example.message_client;

import android.annotation.SuppressLint;
import android.app.Service;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.os.Messenger;
import android.os.RemoteException;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    //3.客户端的信使:负责接受服务器发来的消息
    private Messenger Clientmesssager=new Messenger(new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            Bundle bundle=msg.getData();
            String message=bundle.getString("server_message");
            Toast.makeText(MainActivity.this, "接受到服务器发来的消息"+message, Toast.LENGTH_SHORT).show();
        }
    });
    // 4. 客户端发送消息给服务端
    private Messenger Servermessenger;
    private ServiceConnection connection=new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName name, IBinder service) {
            Servermessenger=new Messenger(service);//获取服务端信使
            Message message= Message.obtain();
            Bundle bundle=new Bundle();
            bundle.putString("client_message","你好啊服务器");
            message.setData(bundle);
            //非常重要的一句话
            message.replyTo = Clientmesssager;
            try {
                Servermessenger.send(message);
            } catch (RemoteException e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onServiceDisconnected(ComponentName name) {
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i(TAG, "onCreate: 我说了啥 a");
        //1.绑定服务
        Intent intent=new Intent();
        intent.setAction("com.feng.1705A");
        intent.setPackage("com.example.message_server");
        bindService(intent,connection, Service.BIND_AUTO_CREATE);
    }
    //2.解除绑定
    @Override
    protected void onDestroy() {
        super.onDestroy();
        unbindService(connection);
    }
}
【Android studio】service在app直接退出下,整体输出情况,实现开机自启动,一直后台运行 在服务正常运行时候,如果此时直接关闭app,结束进程,此时不会调用ondestroy,而是会调用onStartCommand,虽然很奇怪,但确实是这样的,因此如何要实现程序一直运行服务,那么可以这个函数连进行服务是否存在判断,然后如果服务不存在了,直接进行服务的重启,即服务创建,然后服务重启,从而实现服务的一直有效。 判断服务是否存在 添加链接描述 ... 阅读详情

相关推荐

四种进程间通信的方式demo

四种进程间通信的方式:activity 、service AIDL 、ContentProvider 、BroadcastReceiver 一个客户端一个服务端,相互通信

2023最新版Android studio安装入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…从某种程度来讲,在网络安全领域,跟医生职业一样,越老越吃香,因为技术愈加成熟,自然工作会受到重视,升职加薪则是水到渠成之事。

Javachichi的博客 8万+

STA 静态时序分析 第三章——标准单元库中的高级功耗建模与优化策略

本文深入探讨了STA静态时序分析中标准单元库的高级功耗建模与优化策略。详细解析了动态功耗和漏电功耗的精细建模技术,包括基于波形敏感的CCS模型和温度敏感的漏电模型,并介绍了多工艺角功耗建模及低功耗设计优化策略,为纳米级芯片设计提供关键能效解决方案。

weixin_29290863的博客 224

Android Studio安装和使用教程(全文图解)

我们先进入安装的SDK目录,进入platform-tools目录下,找到adb应用程序,从这里打开cmd,因为这里没有将adb添加到环境变量,要是已经添加过adb的环境变量的可以直接打开cmd。1、在Android studio面板里,运行MainActivity.java,编译成功后,正常情况你手机会提示你安装程序,安装完成后,就可以运行了。这里对于华为手机有个坑,我们在开发者选项那里,如果打开了“监控ADB安装应用”,会导致这个程序在手机上安不上,需要关上那个“监控ADB安装应用”选项。

GitHub质检员 1万+

爬虫实战:抖音视频搜索数据爬虫开发实战(附完整Python源码)

【代码】抖音视频搜索数据爬虫开发实战(附完整Python源码)

weixin_61226361的博客 3595

别再卡在Google验证了!用Header Editor插件5分钟搞定TryHackMe注册(附最新.json规则)

本文提供了使用Header Editor插件快速解决TryHackMe注册时Google验证失败问题的详细指南。通过导入特定的JSON规则文件,用户可以轻松绕过网络限制,5分钟内完成账号注册,无需复杂设置。文章包含完整的配置步骤、常见问题解决方案以及安全使用建议。

weixin_30736301的博客 462

Android Studio入门级教程(详细)【小白必看】[通俗易懂]

有了Java阶段的学习,这一阶段建议以视频学习为主辅以图书查漏补缺。遇到问题可以去百度,入门的问题一般会有很多人遇到,并且给出比较好的解答。需要掌握基本知识点,比如四大组件如何使用、如何创建Service、如何进行布局、简单的自定义View、动画、网络通信等常见技术。注:小白为了养成良好习惯,每个控件的id一定要起得严谨,一看到就知道是什么意思,最好不要含有数字。R是类 索引类 把r文件下的所有文件进行索引 资源目录的索引 通过索引号找到响应的静态成员。可能有许多小伙伴不知道R是什么?

Android23333的博客 6万+

SAP SLT 在 carve-out 场景中的关键作用:从理论到实操全景展现

深入剖析 SAP Landscape Transformation(SLT Replication Server)在 carve‑out 场景中的价值,需要从 carve‑out 本身的背景逻辑说起。carve‑out 指的是企业因并购、拆分、剥离商业单元等因素,而将 SAP 系统中某部分业务(例如组织单元、公司代码、模块数据等) separated 出来,导入到独立的系统中。这一过程极具挑战性,既要确保业务连续性,又要实现数据精准迁移和系统隔离 (

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 7551

2023最新版Android studio安装入门教程(非常详细)从零基础入门到精通,看完这一篇就够了。

网络安全行业产业以来,随即新增加了几十个网络安全行业岗位︰网络安全专家、网络安全分析师、安全咨询师、网络安全工程师、安全架构师、安全运维工程师、渗透工程师、信息安全管理员、数据安全工程师、网络安全运营工程师、网络安全应急响应工程师、数据鉴定师、网络安全产品经理、网络安全服务工程师、网络安全培训师、网络安全审计员、威胁情报分析工程师、灾难恢复专业人员、实战攻防专业人员…网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

leah126的博客 23万+

YOLO26 改进 - 注意力机制 | Mask Attention掩码注意力,可学习掩码矩阵破解低分辨率特征提取难题 | 2025 预印

本文提出了用于低分辨率图像分割的MaskAttn - UNet框架,并将其核心的掩码注意力机制集成到YOLO26中。传统U - Net类模型难以捕捉全局关联,Transformer类模型计算量大,而掩码注意力机制通过可学习的掩码,让模型选择性关注重要区域,融合了卷积的局部效率和注意力的全局视野。其工作流程包括特征适配、掩码生成、定向注意力计算和特征融合。我们将掩码注意力机制代码集成到YOLO26中。

魔改工程师的博客 834

【Flutter 面试题】 怎么减少Widget的重新构建?

关于 const 关键字的使用:在 Flutter 开发中,任何时候当你确定一个 Widget 在其整个生命周期内都不会发生变化时,使用 const 关键字声明这个 Widget。这样的声明告诉 Flutter 框架这个 Widget 可以在编译时生成,后续的构建周期中可以重用已经创建的 Widget,从而避免了重复的构建开销。这适用于静态文本、图标或整个不变的 Widget 树。

Code Metaverse 1577

关于 Android Studio 的安装与使用详解

Android Studio 是一个强大且完整的 Android 开发工具,无论是开发者还是安全研究者,熟练掌握它都非常关键。可以先从搭建环境开始,慢慢探索更多功能,比如:插件开发模拟器自动化与 Frida、Xposed 联动调试。

Triste__chengxi的博客 1万+

self‑improving‑agent 安装与配置指南(OpenClaw)

长期记忆错误反思用户偏好学习持续进化AI → 反思 → 学习 → 改进。

tiantiantbtb的博客 1340

Android Studio的下载,安装,配置,插件

Android Studio下载 下面三个地址都可以下载: https://developer.android.google.cn/studio http://www.android-studio.org/ https://www.androiddevtools.cn/ Android Studio安装步骤 双击安装包: 依次出现以下界面,点击next即可: 设置AS安装路径: 这里...

qq_36699930的博客 2万+

【目标检测】基于yolov5的安全帽佩戴检测系统(附代码和数据集)

【目标检测】基于yolov5的安全帽佩戴检测系统(附代码和数据集)

学无止境、积少成多、厚积薄发 3105

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

AndroidStudio入门基础(一)——基础布局

写在前面: 上学期学习了Android,从一开始的什么都不懂到后来成功做出一个课程设计作品,回忆起来一路还是充满坎坷和辛酸泪的啊。 遗忘是可怕的,为了防止以后把好不容易学到的东西忘得一干二净,我打算写一系列的AndroidStudio教程记录一些有用的知识点,当然,我会从最基础的地方写起,希望可以帮助到一些初学者~ 最后,如果时间和精力允许的情况下,我会一步步的还原我的课程设计 (...

qq_42183184的博客 8万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android Studio安装教程

Android Studio安装教程

ニャンコちゃん的博客 9122

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android Studio下载与安装

Android Studio下载与安装

qq_41264896的博客 1万+

Android Studio3.5.2安装

1.官网上下载安装文件 官网www.android-studio.org上,2021/12/6为止最新版为3.5.2,推荐下载文件android-studio-ide-191.5977832-windows.exe(64位Windows版) 2.安装过程 双击安装文件android-studio-ide-191.5977832-windows.exe 等待安装。。。 ......

qq_24093523的博客 8244

安卓开发--环境配置

安卓开发--环境配置

LQ_001的博客 1390

下载AndroidStudio以及安装过程

找到要安装的版本Android Studio lguana |2023.2.1 RC 1 February 5, 2024。打开官网下载地址,为了寻求以前版本,点击“下载归档”,跳转到链接。点击SDK Manager,检查一下SDK安装好没有。遇到报错,因为C盘用户名有中文。点击Finish,进入开发界面,完结撒花~C盘用户名有中文,修改路径到D盘。点击×关掉小弹窗,点击Next。点击New Project。修改项目名和项目保存路径后。点击Don’t send。点击Browse..

m0_74068070的博客 1万+

第10天ContentProvider内容提供者的使用

ContentProvider 的使用ContentProvider 的介绍和使用ContentProvider介绍ContentProvider项目中应用ContentProvider机制进程内数据共享自定义ContentProvider进程间数据共享进程间ContentProvider增删改查自定义权限权限是什么自定义权限使用 ContentProvider 的介绍和使用 导入注解的包 im...

shuai_ge_feng的博客 2077

Android Studio的下载安装

话不多说,没有概念,全是干活。

weilaaer的博客 1万+

AndroidStudio安装APP调试出现Installation did not succeed报错原因分析

今天做APP安装调试,发现始终无法安装成功,一直报错如下: Installation did not succeed. The application could not be installed: INSTALL_FAILED_USER_RESTRICTED 原因分析1: 上面显示安装程序失败,原因在于用户权限不够。单词restricted : 受限制的 此时,我的开发者选项已经开启,并且windows系统和android studio已经能够识别我的设备了,但还是报了这样的错误。 解决办法1

cug-jdc的博客 1万+
上一篇: Andrio studio 学习 之 后台操作及IntentService
下一篇: Andriod studio 学习 之 Application的生命周期和上下文的应用场景
Young_cloud
博客等级 码龄7年 18粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值