我有一个应用程序,其服务完全在后台运行,但是有时我需要更改前台活动中的内容,现在让我们说我想显示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();
}
});
我该怎么办?如果不可能的话,是否有办法向服务发送信号或消息来告诉它?
为此,您有两个选择,如果只显示一个Toast而不与其他元素进行交互,则可以实现广播接收器,并通过自定义操作使您的自定义意图得以实现,Intent int= new Intent(); int.setAction("Your custom string here");
然后在您的广播播客中发布祝酒词,
OR
您可以使用自定义处理程序与前景和活动中的所有对象进行交互,这是一些学习材料,https://developer.android.com/training/multiple-threads/communicate-ui