我正在使用我的第一个应用程序服务。我已经创建了处理GPS和其他一些东西的普通android服务。一切似乎都有效但......我不知道如何与Activity中的服务进行交互。
我的服务类包含Sub fixText()
Dim i As Integer, lastRow As Integer
Dim addressCol As Integer, cityCol As Integer
'Insert header row and add headers
Rows(1).EntireRow.Insert
Cells(1, 1).Value = "Name"
Cells(1, 2).Value = "Address"
Cells(1, 3).Value = "City/State"
addressCol = 2
cityCol = 3
'Find the last used row
lastRow = ActiveSheet.UsedRange.Rows.Count
For i = 2 To lastRow
If i > lastRow Then Exit For
Cells(i, addressCol).Value = Cells(i, 1).Offset(1, 0).Value
Cells(i, cityCol).Value = Cells(i, 1).Offset(2, 0).Value
' Delete the two rows you just copied info from
Range(Cells(i + 1, 1), Cells(i + 2, 1)).EntireRow.Delete
'Get new last row
lastRow = ActiveSheet.UsedRange.Rows.Count
Next i
End Sub
类,该类包含当前的GPS位置和其他一些变量。
User
我的目标是从活动中访问public class PxService extends Service
{
public static final User user;
...
}
班级(或成员)。
我的服务不是绑定服务,因为我希望它在我的应用程序关闭时运行(据我所知,当应用程序未运行时绑定服务无法工作,但可能我错了)。
对此有何帮助?
答案 0 :(得分:0)
您可以将用户保存在数据库中。 或者你可以实现User for User类接口Parcelable(或Serializable)并刷新意图BroadcastReciever中的用户对象:
在服务中
Intent intent = new Intent("YOUR_ACTION);
intent.putExtra("user", user);
sendBroadcast(intent);
和BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("YOUR_ACTION")) {
User user = (User) intent.getParcelableExtra("user);
}
}
不要忘记注册你的广播记录。
这是一篇简单的文章如何使用这种方法。 http://www.truiton.com/2014/09/android-service-broadcastreceiver-example/
更新
评论此" 到目前为止我知道绑定服务在app未运行时无法正常工作,但也许我错了"。您可以使用服务方法startForeground(int id, Notification notification)
文档:
使此服务在前台运行,提供正在进行的服务 在此状态下向用户显示通知。默认情况下 服务是后台的,这意味着如果系统需要杀死它们 回收更多内存(例如在网络中显示大页面) 浏览器),他们可以在没有太大伤害的情况下被杀死。你可以设置它 如果查杀您的服务会对用户造成破坏,例如 如果您的服务正在执行背景音乐播放,那么用户 会注意到他们的音乐是否停止播放。