Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获取不同活动的ReceiveResult值?_Android - Fatal编程技术网

Android 如何获取不同活动的ReceiveResult值?

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

我正在开发一个类似于互联网速度表的应用程序。这说明了上传和下载速率。我正在为此使用一项服务

假设我从活动A开始服务

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)
即可获得更新的结果。

只给出了一个时间值。它不会被更新。我已经更新了我的答案。它只给出了一个时间值。它不会更新。我已经更新了我的答案。你能详细说明你的答案吗。你能详细说明你的答案吗。