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
如何解决 JSONArray 问题,无法获取数据,Android Studio
在 android studio kotlin 中将数据从活动传递到片段(不重复,这些方法不起作用)