[android studio从服务获取Activity对象

问题描述 投票:0回答:1

我有一个应用程序,其服务完全在后台运行,但是有时我需要更改前台活动中的内容,现在让我们说我想显示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个回答
0
投票

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

OR

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

© www.soinside.com 2019 - 2024. All rights reserved.