【问题标题】:android studio get Activity object from serviceandroid studio 从服务中获取 Activity 对象
【发布时间】: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();
    }
});

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

【问题讨论】:

    标签: android android-activity android-service


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多