android studio 从服务中获取 Activity 对象

Posted

技术标签:

【中文标题】android studio 从服务中获取 Activity 对象【英文标题】:android studio get Activity object from service 【发布时间】:2020-09-17 21:22:03 【问题描述】:

我有一个应用程序的服务完全在后台运行,但有时我需要更改前台活动中的内容,现在假设我想显示Toast。 首先我正在检查应用程序是否作为前台打开

 public boolean isForeground(String myPackage) 
    ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    List<ActivityManager.RunningTaskInfo> runningTaskInfo = manager.getRunningTasks(1);
    ComponentName componentInfo = runningTaskInfo.get(0).topActivity;
    return componentInfo.getPackageName().equals(myPackage);

那我想知道正在运行的活动是什么

  String PKG_Name = componentInfo.getPackageName();

这会给我名字,但我想要的是得到对象Activity,做这样的事情:

activity.runOnUiThread(new Runnable() 
    public void run() 
        Toast.makeText(activity, "Hello", Toast.LENGTH_SHORT).show();
    
);

我该怎么做?如果不可能,有没有办法向服务发送信号或消息来告诉它?

【问题讨论】:

【参考方案1】:

为此,您有两个选择,如果您可以只显示 Toast 并且不与其他元素交互,则可以实现广播接收器并使用自定义操作制作自定义意图, Intent int= new Intent(); int.setAction("Your custom string here"); 然后在您的广播接收器中发布祝酒词,

您可以使用自定义处理程序与前台和活动中的所有对象进行交互,这里有一些学习材料, https://developer.android.com/training/multiple-threads/communicate-ui

【讨论】:

以上是关于android studio 从服务中获取 Activity 对象的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio gradle sync失败无法从服务器获取状态为405的gradle pom

Android studio从相册里面选图片无法选中

如何解决 JSONArray 问题,无法获取数据,Android Studio

在 android studio kotlin 中将数据从活动传递到片段(不重复,这些方法不起作用)

Android Studio 无法从 API 获取 Json

如何在android studio中从这种类型的json数组中获取价值?