【问题标题】:Get view of activity and fragments from service从服务中获取活动和片段的视图
【发布时间】:2017-10-08 12:07:51
【问题描述】:

我的应用上有一项服务可以获取我的位置 (gps)。该服务获取纬度、经度等信息,我想将这些信息写入布局片段和活动(TextView)中。

但是我怎样才能获得这些片段的视图引用,因为我的服务?

【问题讨论】:

    标签: android android-activity service fragment


    【解决方案1】:

    您可以做一件事来实现这一目标。向活动发送广播。在您要更新查看注册广播的那个活动上。一旦你得到位置的东西,然后发送广播。希望对您有所帮助。当您获取位置信息并通过以下代码中提到的意图传递该信息时,将此代码写入服务中

    Intent broadcastIntent = new Intent(your action here);
            broadcastIntent.putExtra(BaseBroadCastReceiver.BROADCAST_KEY_AUDIO_INDEX, audioIndex);
            broadcastIntent.putExtra(BaseBroadCastReceiver.BROADCAST_KEY_AUDIO_LIST, mSongList.size());
            sendBroadcast(broadcastIntent);
    

    在你的活动中写下代码

     private void registerMyReceiver() {
        IntentFilter filter = new IntentFilter(your action here you passed in service);
        registerReceiver(playNewAudio, filter);
    }
    

    注意:您的操作可以是任何字符串,但两边的字符串必须相同

    当调用activity的oncreate方法时,调用registerMyReceiver()方法 并且在 onDestroy 方法中取消注册,否则您可能会得到 RUNTIME 异常。

    下面将是您的实际广播接收器代码

     private BroadcastReceiver myBroadcast= new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //do your stuff here... get extra which you passed 
            // from service and set that value in views
        }
    };
    

    【讨论】:

    • 感谢您的回复。如何向活动发送广播?
    • @Luzwitz,我已经添加了代码以方便您,如果对您有帮助,请不要忘记接受并支持答案
    • 好的,非常感谢。自从我的活动以来,我如何与我的服务沟通?例如,对于变量的更改值...
    • 因为您需要将您的服务与您的活动绑定
    • 好的,你有给我的服务提供活动上下文的例子吗?
    猜你喜欢
    • 1970-01-01
    • 2020-10-05
    • 2014-11-24
    • 1970-01-01
    • 2014-08-30
    • 2015-12-25
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多