当前位置: 首页 > 知识库问答 >
问题:

如何使活动运行到服务

戚翼
2023-03-14

我是java新手,想知道如何在后台与服务一起运行活动。这样,当活动关闭并重新打开时,它将与服务一起继续。我不知道怎么解释。

假设3个服务,每个服务每小时执行一次。

服务1。。。1小时。。。服务2。。。1小时。。。服务3。已完成。

每次执行时,都会在活动中设置一个文本视图。但是当活动关闭时,不会创建文本视图。

我找到的唯一方法是使用变量,如下例所示

服务1:

public int service_one_done = 1;

服务2:

public int service_two_done = 1;

服务3:

public int service_three_done = 1;

创建活动:

if (service_one_done == 1) { textview_example1.setVisibility(View.VISIBLE)
} if (service_two_done == 1) { textview_example2.setVisibility(View.VISIBLE)
} if (service_three_done == 1) { textview_example3.setVisibility(View.VISIBLE)
}

我想知道是否有更好的方法

共有1个答案

唐珂
2023-03-14

在我的服务课上,我写了这个

private static void sendMessageToActivity(Location l, String msg) {
    Intent intent = new Intent("GPSLocationUpdates");
    // You can also include some extra data.
    intent.putExtra("Status", msg);
    Bundle b = new Bundle();
    b.putParcelable("Location", l);
    intent.putExtra("Location", b);
    LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
}

在活动端,我们必须接收广播信息

LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
            mMessageReceiver, new IntentFilter("GPSLocationUpdates"));

通过这种方式,您可以将消息发送到活动。这里mMessageRecencer是该类中的类,您将执行您想要的任何内容......

在我的代码中,我做到了。。。。

private BroadcastReceiver mMessageReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        // Get extra data included in the Intent
        String message = intent.getStringExtra("Status");
        Bundle b = intent.getBundleExtra("Location");
        lastKnownLoc = (Location) b.getParcelable("Location");
        if (lastKnownLoc != null) {
            tvLatitude.setText(String.valueOf(lastKnownLoc.getLatitude()));
            tvLongitude
                    .setText(String.valueOf(lastKnownLoc.getLongitude()));
            tvAccuracy.setText(String.valueOf(lastKnownLoc.getAccuracy()));
            tvTimestamp.setText((new Date(lastKnownLoc.getTime())
                    .toString()));
            tvProvider.setText(lastKnownLoc.getProvider());
        }
        tvStatus.setText(message);
        // Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
    }
};

此处引用

 类似资料:
  • 问题内容: 抱歉再次困扰您,但是我仍然找不到从活动到服务的回调方法… 找到了类似的问题- 如何在Android中定义回调? 但还不确定如何将该示例集成到我的项目中。 任何建议或指向清晰教程的链接都很棒! 问题答案: 在示例中显示的这种回调(观察者模式)在服务和活动之间不起作用。当您从类A 创建了 类B 的实例 并希望将回调从B发送到A 时,请使用观察者模式。 关于服务和活动,情况完全不同。AFAI

  • 样品https://github.com/spring-projects/spring-integration-samples/tree/master/basic/tcp-client-server非常适合构建TCP服务器应用程序。它很简单,可以在JVM上运行。它不需要任何应用服务器。 示例使用命令行输入来运行程序。我希望服务器仅从套接字端口而不是通过命令行接受数据。如果删除命令行输入,主线程将完

  • 假设我在服务中有一个可用的字符串test=“value”,并希望将其发送到我正在运行的mainactivity。如何安全地发送数据?我在寻找一个最简单的例子,其他应用程序看不到数据。当我看意图时,它会说: 广播是任何应用程序都可以接收的消息。系统为系统事件提供各种广播,例如当系统启动或设备开始充电时。您可以将广播发送到 但是,我只想将其发送到我的应用程序,因为它包含私人数据。在我的服务中,我尝试了

  • 我已经在我的应用程序中实现了AdMob Interstival方法如下: 我在我的活动中构造ads对象。(广告对象对活动有引用) 在我的广告对象中,我用计时器检查间隙是否在最后三分钟显示,如果没有显示,我会通过处理程序显示给该活动。 如果活动被停止或破坏,我也会停止我的广告计时器 大多数情况下,此方案都能正常工作。但有时即使应用程序已经退出,广告也会出现一次。 有没有办法从我的ads对象中检查该活

  • 我是Android开发新手,有一些关于生命周期活动的东西我不理解,特别是关于我正在研究的以下应用程序示例。 在我的应用程序中,我有一个登录活动和主活动。 > < li> 在我的登录活动中,如果尝试成功,将启动主活动,并完成()登录活动。< br>== 在我的主要活动中,我有一个断开连接按钮,该按钮创建了一个启动(新?)登录活动的 Intent。 == start activity(loginAct

  • 问题内容: 如标题所示,方案是:首次使用该应用程序时,显示屏幕A。完成屏幕A后,该按钮将引导您进入屏幕B。从现在开始,直到永远,屏幕B始终是主屏幕“启动应用程序时,屏幕上显示“屏幕(活动?)”。我正在尝试这2天,但我收不到。有人请解释一些细节,甚至最好给我扔一个code.rar,这样我就可以研究它。我为此感到疯狂!!! 问题答案: 只需在AndroidManifest.xml中将您的Activit