Android 如何获取不同活动的ReceiveResult值?
我正在开发一个类似于互联网速度表的应用程序。这说明了上传和下载速率。我正在为此使用一项服务 假设我从活动A开始服务Android 如何获取不同活动的ReceiveResult值?,android,Android,我正在开发一个类似于互联网速度表的应用程序。这说明了上传和下载速率。我正在为此使用一项服务 假设我从活动A开始服务 Intent intent = new Intent(MainActivity.this, Service.class); intent.putExtra("receiver", new ResultReceiver(new Handler()) { @Override protected void onReceiveResult(int res
Intent intent = new Intent(MainActivity.this, Service.class);
intent.putExtra("receiver", new ResultReceiver(new Handler()) {
@Override
protected void onReceiveResult(int resultCode, Bundle resultData) {
super.onReceiveResult(resultCode, resultData);
if (resultCode == 1) {
int d = resultData.getInt("progress");
}
}
});
startService(intent);
服务类给了我d
变量的值
是否可以在活动B中直接获取该值,而该活动B甚至尚未启动,但无论何时用户启动该活动,他们都可以看到
ResultReceiver
的值?使用回调模式将数据从服务回调到活动,您可以将此回调实例传递给另一个活动使用从服务到活动的回调数据的回调模式,您可以将此回调实例传递给另一个活动只需创建一个公共静态
变量,让我们将其命名为LastTestedSpeed
,并为其赋值。然后,您可以在任何活动中访问它
已更新
给你一个简单的例子,可能适合你的需要
服务
:
public class SpeedMeterService extends Service {
private static SpeedResultListenerGroup listenerGroup = new SpeedResultListenerGroup();
public interface SpeedResultListener {
void onUpdate(int resultInTestingProgress);
void onFinalResult(int finalResult);
}
private static class SpeedResultListenerGroup implements SpeedResultListener {
private List<SpeedResultListener> resultListeners = new ArrayList<>();
public void register(SpeedResultListener listener) {
resultListeners.add(listener);
}
public void unregister(SpeedResultListener listener) {
resultListeners.remove(listener);
}
@Override
public void onUpdate(int resultInTestingProgress) {
}
@Override
public void onFinalResult(int finalResult) {
}
}
public static void register(SpeedResultListener listener) {
listenerGroup.register(listener);
}
public static void unregister(SpeedResultListener listener) {
listenerGroup.unregister(listener);
}
private void yourSpeedTestFunctionHere() {
//every time you got speed updated during tesing progress, call: listenerGroup.onUpdate(updatedSpeed);
//when you got the final speed, call: listenerGroup.onFinalResult(finalTestedSpeed);
}
}
现在,在活动B
中,您只需调用SpeedMeterService.register(callback)
即可获得更新的结果。只需创建一个公共静态
变量,将其命名为LastTestedSpeed
,并为其赋值。然后,您可以在任何活动中访问它
已更新
给你一个简单的例子,可能适合你的需要
服务
:
public class SpeedMeterService extends Service {
private static SpeedResultListenerGroup listenerGroup = new SpeedResultListenerGroup();
public interface SpeedResultListener {
void onUpdate(int resultInTestingProgress);
void onFinalResult(int finalResult);
}
private static class SpeedResultListenerGroup implements SpeedResultListener {
private List<SpeedResultListener> resultListeners = new ArrayList<>();
public void register(SpeedResultListener listener) {
resultListeners.add(listener);
}
public void unregister(SpeedResultListener listener) {
resultListeners.remove(listener);
}
@Override
public void onUpdate(int resultInTestingProgress) {
}
@Override
public void onFinalResult(int finalResult) {
}
}
public static void register(SpeedResultListener listener) {
listenerGroup.register(listener);
}
public static void unregister(SpeedResultListener listener) {
listenerGroup.unregister(listener);
}
private void yourSpeedTestFunctionHere() {
//every time you got speed updated during tesing progress, call: listenerGroup.onUpdate(updatedSpeed);
//when you got the final speed, call: listenerGroup.onFinalResult(finalTestedSpeed);
}
}
现在,在活动B
中,您只需调用SpeedMeterService.register(callback)
即可获得更新的结果。只给出了一个时间值。它不会被更新。我已经更新了我的答案。它只给出了一个时间值。它不会更新。我已经更新了我的答案。你能详细说明你的答案吗。你能详细说明你的答案吗。