我开发了一个Android应用程序,它有1个进程和2个服务.但我注意到"Google服务"有2个进程和1个服务.它怎么能有2个过程?我在Processes and Threads上做了一些阅读,试图更多地了解流程.它谈到有一个清单条目,但没有一个具体的例子,我没有得到它.有人可以解释Android应用程序如何拥有多个进程并提供一个具体的例子吗?
我创建了一个简单的Android应用程序,用于测试如何使用处理程序或处理程序将数据从后台服务/线程传递到除创建后台服务的MainActivity之外的其他一些活动.我已经在MainActivity中使用了服务,线程和处理程序.最后一步是获取处理程序以将数据传递给除MainActivity之外的其他活动.我可以让服务将消息传递给MainActivity的处理程序,但我不知道如何让它将数据传递给其他一些活动.
为什么有人想要这样做?我认为这与一个简单的MP3播放器相比,但实际上它与一个不错的FM收音机相比.MainActivity使用后台服务,允许我选择FM电台.当我启动Play活动时,它应该绑定到相同的后台服务,这样我就可以继续听,而它(好的部分)显示音频的图形均衡器或动画.基本上,我不知道如何从多个活动绑定到后台服务.
我的代码最初基于Pro Android 2中的服务示例页面304,并且受到CommonsWare示例应用程序的极大帮助.
请查看我目前的代码.它由三个经过仔细评论的文件组成,这些文件描述了我正在尝试做的事情以及除了MainActivity之外我将数据传递给其他一些活动的困难:
/**************************************************************************************************
* File: MainActivity.java
* Application: BackgroundService
* Description: This file contains the main activity that is run when the BackgroundService
* application is launched.
**************************************************************************************************/
package com.marie.mainactivity;
import com.marie.mainactivity.BackgroundService;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
/*
* Class: MainActivity
* Purpose: Using a button, the MainActivity class …Run Code Online (Sandbox Code Playgroud) 我正在尝试将Activity绑定到LocalService以与其进行交互.但在我的Activity中,我只能调用我的LocalBinder中定义的方法而不是我的LocalService.我究竟做错了什么?
没有开始刮擦我读了另一个问题,我已经阅读了一些如何编写一些示例代码,我的代码类似于示例代码.另外,为方便起见,我一直在阅读一些服务文档,这是文档该部分的一个小引号:
"当应用程序组件通过调用bindService()绑定它时,服务被"绑定".绑定服务提供了一个客户端 - 服务器接口,允许组件与服务交互,发送请求,获取结果,甚至跨进程执行此操作只有当另一个应用程序组件绑定到绑定服务时,绑定服务才会运行.多个组件可以同时绑定到服务,但是当所有这些组件解除绑定时,服务就会被破坏.
但我不能这样做.如上所述,我能做的最好的事情就是在我的LocalBinder中定义我的Activity调用方法.我没有像上面黑色突出显示的部分那样取得任何成就.
如果它有帮助,这是我的代码的相关部分.
要绑定的LocalService:
/**************************************************************************************************
* Filename: LocalService.java
* Project name: Local Service Sample
* Application name: Local Service
* Description: This file contains the LocalService (extends Service) for our Local Service app
**************************************************************************************************/
package com.marie.localservicesample;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message; …Run Code Online (Sandbox Code Playgroud) 我有一个问题与大约一年前@mnish提出的这个问题有关.
请看看他的问题和代码.他实现了一个ServiceConnection()并将其传递给bindService().这遵循顶部附近的服务文档中的本地服务示例.
我想实现本地服务示例,所以我试图从@mnish问题/答案中添加一些细节.在ServiceConnection()中@mnish有这条线让我感到困惑:
mService = ILocService.Stub.asInterface(iservice);
Run Code Online (Sandbox Code Playgroud)
我理解@mnish编写了这段代码,但有没有人知道ILocService是什么,并且知道如何创建自己的ILocService?这个结构记录在哪里,我需要它吗?IBinder的价值来自何处?