小编tun*_*ing的帖子

Android服务如何知道它不受任何活动的约束

我有一个Android服务,即使在最后一个Activity从堆栈中弹出,或者用户已选择执行其他操作,我仍希望继续运行.

本质上,服务正在侦听远程服务器上的更改,当且仅当应用程序中的活动未运行(或可见)时,我才想生成通知.换句话说,我不希望在用户直接与应用程序交互时发生通知.

在用户直接与应用程序交互的情况下,服务将通知活动并基于更改更新适当的UI元素.我计划通过观察者模式实现这一点.

如果没有应用程序活动绑定到它,服务如何知道?

谢谢,J

service android android-activity

13
推荐指数
2
解决办法
7851
查看次数

共享界面

我正在编写一个Java应用程序,它将加载第三方"驱动程序".我打算开发一个接口,它将定义"驱动程序"必须实现的必需方法,以便在应用程序中工作.

目的是将"驱动程序"包含在jar文件中.然后第三方"驱动程序"开发人员将被要求实现该接口.

当我试图解决这个问题时,我将"驱动程序"代码移动到jar中,发现我遇到了麻烦,因为我在主应用程序和jar文件中都定义了接口.

是否有推荐的方法来实施这种方法,还是我走错了方向?

Ĵ

java jar interface driver

2
推荐指数
1
解决办法
844
查看次数

具有警报管理器和内部广播接收器的Android长时间运行服务

我有一个使用自定义Connection类(扩展线程)到硬件控制器的服务.当用户更喜欢时,我希望永久保持这种联系.当Android设备失去互联网连接,在Wi-Fi之间切换等时,我已经有了处理代码.

为了保持连接,控制器要求您在每5分钟内与其通话.我目前在Connection类中启动一个在while()中运行的线程,并检查系统时间和上次通信的时间,当> 4分钟时它会请求状态.由于某种原因,在不同时间通信不会及时发生.即,在5分钟后发生.据我所知,服务不会死,但控制器的"Ping"迟到了.当我将手机插入充电器(或调试器)时,不会发生这种情况.此外,当我将服务移动到前台时,行为是相同的.

手机进入睡眠状态时手机是否会减速?

有没有更好的办法?

我认为它是AlarmManger,但是我无法在服务中使用内部类.我尝试使用API​​演示作为起点,但我似乎无法弄清楚如何注册广播接收器.我试图以编程方式注册接收器,而不更改清单.

public class DeviceConnectionService extends Service {

    @Override
    public void onCreate() {
        Intent intent = new Intent(this, PingConnection.class);
        intent.setAction("KEEP_CONNECTION_ALIVE");
        PendingIntent sender = PendingIntent.getBroadcast(this,
            0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
        // We want the alarm to go off 30 seconds from now.
        long firstTime = SystemClock.elapsedRealtime();
        firstTime += 15*1000;
        // Schedule the alarm!
        AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                firstTime, 15*1000, sender);
        // register to listen to the Alarm Manager
        if (mPingConnectionReceiver == null) {
            mPingConnectionReceiver = new PingConnection(); …
Run Code Online (Sandbox Code Playgroud)

service android broadcastreceiver alarmmanager

2
推荐指数
1
解决办法
3612
查看次数