我创建了一项服务,并希望始终运行此服务,直到我的手机重新启动或强制关闭.该服务应该在后台运行.
创建的服务和启动服务的示例代码:
启动服务:
Intent service = new Intent(getApplicationContext(), MyService.class);
getApplicationContext().startService(service);
Run Code Online (Sandbox Code Playgroud)
服务:
public class MyService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO do something useful
HFLAG = true;
//smsHandler.sendEmptyMessageDelayed(DISPLAY_DATA, 1000);
return Service.START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
// TODO for communication return IBinder implementation
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
清单声明:
<service
android:name=".MyService"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
</service>
Run Code Online (Sandbox Code Playgroud)
是否可以像应用程序暂停和其他任何操作一样运行此服务.一段时间后,我的应用程序暂停,服务也暂停或停止.那么如何在后台运行此服务并始终如此.
我正在尝试将SignalR引入我的Android Studio项目.
我成功地遵循了关于SignalR入门的教程,所以现在我有了工作Hub.该教程中的客户端是javascript,我在PC上的网页(在Chrome中)以及在我的家庭LAN上通过WiFi在我的Android手机上运行正常.
然后我去了Android java客户端工作.我已经在Android Studio中安装了一个Android应用程序项目Hub,作为下一步,我想与之进行对话.
我下载了适用于Android的官方Microsoft java客户端,作为zip.
然后我将其解压缩并将其作为项目加载到Android Studio中.它构建没有错误.
问题#1:这个项目只给我一个AAR,而不是一个JAR.我已经想出如何在Android Studio中使用jar,所以如果有一种方法可以在这个时刻创建一个jar,我可能会让这个工作.
此时我将依赖项包含到我的应用程序项目中.readme.md说:
添加signalr-client-sdk.jar,signalr-client-sdk-android.jar gson库作为项目的gradle依赖项.
所以我试着尽可能地跟着它.这是我的build.gradle:
compile 'com.google.code.gson:gson:2.3.1'
compile files('libs/signalr-client-sdk.jar')
compile files('libs/signalr-client-sdk-android-release.aar')
Run Code Online (Sandbox Code Playgroud)
问题2:将aar作为模块导入Android Studio中的app项目后,它仍然没有看到必要的命名空间来使主要语句工作.这是主要声明(Android中SignalR的hello world,编译方式):
Platform.loadPlatformComponent(new AndroidPlatformComponent());
Run Code Online (Sandbox Code Playgroud)
起初,它没有拿起任何东西,然后拿起import microsoft.aspnet.signalr.client.Platform;了Platform.它仍然没有什么线索来import进行AndroidPlatformComponent,所以我坚持,直到我能过去这一点.
如你所知,Android Studio中有很多文件,我不想在我知道你想看哪些文件之前将它们全部喷出来.如果你告诉我你想看哪些文件,我会将它们添加为编辑.
我似乎与SignalR的JS Client Hub有问题.
问题是'on'处理程序似乎不起作用 - 它不会产生错误,但不会接收服务器发送的任何信号.下面的代码显示了一个提取,我调用服务器(使用调用)工作正常 - 然后在服务器上我回调acceptHubData应该在客户端上获取但不是.
我的目标是当导航到页面时,每个页面将打开与特定集线器的连接,并在用户移动到另一个页面时释放此连接!
编辑:使用以下代码片段工作,但我想知道为什么下面的代码使用'on'事件不起作用!
var superHub = $.connection.mySuperHub;
superHub.client.acceptHubData = function (data) {
$('<li>hello there' + data + '</li>').prependTo($('#ul1'))
}
$.connection.hub.start().done(function () {
$('<li>done phase 1</li>').prependTo($('#ul1'))
});
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激!
这是客户端代码(以js为单位)
$(document).ready(function () {
var myHub;
try {
var connection = $.hubConnection();
connection.start().done(function () {
myHub = connection.createHubProxy("mySuperHub");
myHub.on('acceptHubData', function (data) {
alert(data); // THIS IS NOT CALLED!
});
myHub.invoke('AcceptSignal', "hello from the client2");
});
}
catch (e) {
alert(e.message);
}
});
Run Code Online (Sandbox Code Playgroud)
这是服务器代码:
[HubName("mySuperHub")]
public …Run Code Online (Sandbox Code Playgroud) 我已经阅读了这些主题:
如何在Android Android Client中使用SignalR
但是.net客户端从SignalR服务器获取数据
我用Android编写了一个与SignalR配合使用的简单聊天系统.
它应该是客户端发送消息(通过SendMessage在服务器上调用方法),服务器应该NewMessage在客户端上调用该方法.
这是我ChatHub用C#编写的类(简化).
public class ChatHub : Hub
{
// Store the clients connections Id
static readonly List<string> _connectedClients;
public override Task OnConnected()
{
// Keep connections id
// This section works fine and when the android device connects to the server,
// Its connection id will stored.
_connectedClients.Add(Context.ConnectionId)
//... other codes
}
public void SendMessage(string message)
{
foreach (var connectionId in _connectedClients)
{
// according to the …Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用signalR lib.但是我无法自己编译https://github.com/SignalR/java-client的库- 我在互联网上找到它们.但似乎没有完整(缺少WebsocketTransport)
当我编译https://github.com/SignalR/java-client时,我得到两个库,并将它们粘贴到我的app.gradle中 -
compile files ('libs/signalr-client-sdk.jar')
compile files ('libs/signalr-client-sdk-android.jar')
Run Code Online (Sandbox Code Playgroud)
Progects构建很糟糕,但是当我按下run时 - 它失败了.这是堆栈跟踪 -
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:472)
at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
at com.android.dx.command.dexer.Main.processClass(Main.java:704)
at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
at com.android.dx.command.dexer.Main.access$300(Main.java:83)
at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne(Main.java:632)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main(Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
...while parsing microsoft/aspnet/signalr/client/Action.class
Run Code Online (Sandbox Code Playgroud)
1错误; 中止错误:任务':app:preDexDebug'的执行失败.
com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'命令'C:\ Program Files\Java\jdk1.8.0_45\bin\java.exe''以非完成零退出值1
我不知道该怎么办.我甚至试图编译这个项目的分叉,但是得到了相同的结果,同样的错误.需要任何帮助,谢谢!
UPDATE
在我的应用程序类中我有
Platform.loadPlatformComponent(new AndroidPlatformComponent());
Run Code Online (Sandbox Code Playgroud)
在我的app.gradle中:
compile …Run Code Online (Sandbox Code Playgroud) 嗨,伙计们,我正在尝试与使用SignalR建立聊天通信的Asp.Net核心2.1应用程序进行通信,但我无法弄清楚使用颤振实现这一目标的最佳方法是什么.
我已经搜索了一些库来做这件事,但我找到的那个与Flutter不兼容,只是使用Dart web,因为它使用原始的SignalR.js来包装方法.
你们有关于如何完成这项任务的任何提示吗?
我需要将消息从ASP.NET服务器推送到Android设备,以便在记录状态发生变化时发出通知.所以我想使用来自GitHub的新的Microsoft SignalR Java-Client,使用Eclipse与Android ADT Bundle和Java.
我是Java和SignalR的新手.我有使用HTML工作的SignalR Hub和JavaScript客户端,它可以发送和接收消息.但是我无法进入下一步并让Java-Client在Eclipse/Java/Android中运行.我不知道如何注册接收广播消息.当我使用HTML/JavaScript页面发送消息时,我没有在Android应用程序中,在模拟器中,在Eclipse中收到消息.我能够
我有以下ASP.NET SignalR Hub.cs文件设置:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using System.Threading.Tasks;
public class PtThroughputHub : Hub
{
public void SendAll(string message)
{
Clients.All.broadcastMessage(message);
}
public void SendGroup(string groupName, string message)
{
Clients.Group(groupName).broadcastMessage(message);
}
public Task JoinGroup(string groupName)
{
return Groups.Add(Context.ConnectionId, groupName);
}
public Task LeaveGroup(string groupName)
{
return Groups.Remove(Context.ConnectionId, groupName);
}
}
Run Code Online (Sandbox Code Playgroud)
在JavaScript中,我还可以使用从ASP.NET Hub.cs自动生成的Hubs.js文件来通过Hub发送和接收消息.
<script src="Scripts/jquery-2.1.0.min.js"></script>
<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-2.0.3.min.js"></script>
<!--Reference the …Run Code Online (Sandbox Code Playgroud) 我们有一个asp.net Web应用程序,它具有通知,消息等用户活动的功能.我们也为这个网络应用程序提供了一个原生的Android应用程序.现在我们必须创建用户活动的功能,如通知和消息传递.
例如.用户A喜欢或跟随用户B或进行任何活动,这些活动将通知用户B通知或消息系统,如Facebook.如果你在某些活动中标记你的朋友或者喜欢你的朋友活动,那么你的朋友会通过android app中的通知知道它在网站上显示
在android中检测用户活动并获得推送通知的最佳方式或有效方法是什么.
我做了一些研究,但没有得到正确的想法/轨道.
我有一些喜欢的
asp.net notifications android broadcastreceiver push-notification
我在 Flutter 应用程序上使用 SignalR 推送通知,效果很好。我从后端获取消息并使用 flutter_local_notifications 显示通知。问题是 SignalR 服务会在一段时间后关闭。如何让我的应用程序保持在后台运行?甚至重新启动?
这是我的代码:
import 'dart:async';
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:isolate_test/Model/UserMessageModel.dart';
import 'package:signalr_core/signalr_core.dart';
import 'EndPointService.dart';
import 'NotificationService.dart';
class SignalRProvider {
static String appName = "NOTIFICATION";
static String? userName = "";
static String deviceName = "android_app";
static List<UserMessageModel> messages = <UserMessageModel>[];
HubConnection connection = HubConnectionBuilder()
.withUrl(
'my_url',
HttpConnectionOptions(
logging: (level, message) => print(message),
))
.withAutomaticReconnect()
.withHubProtocol(JsonHubProtocol())
.build();
Function(bool update)? onMessagesUpdateCallback;
SignalRProvider({
this.onMessagesUpdateCallback,
});
setUsername(String username) {
userName = username;
}
Future initSignalR(BuildContext context) async …Run Code Online (Sandbox Code Playgroud) 尝试了几个选项后,我无法在Android应用程序上收到所有SignalR消息.在我看来它似乎是与LongPollingTransport相关的东西,但我找不到解决方案...我收到所有的longPolling消息,但有时它进入处理程序,有时它尝试再次连接到服务器而不进入处理程序方法.
我试着按照这里的例子.
代码很简单:
public void startNewSignalR(){
Platform.loadPlatformComponent(new AndroidPlatformComponent());
// Create a new console logger
Logger logger = new Logger() {
@Override
public void log(String message, LogLevel level) {
System.out.println(message);
}
};
Uri signalRSource = Uri.parse(serverUrl);
HubConnection connection = new HubConnection(signalRSource.toString(), "", true, logger);
eventHub = connection.createHubProxy("eventHub");
connection.error(new ErrorCallback() {
@Override
public void onError(Throwable error) {
System.err.println("There was an error communicating with the server.");
System.err.println("Error detail: " + error.toString());
error.printStackTrace(System.err);
}
});
// Subscribe to the connected event
connection.connected(new …Run Code Online (Sandbox Code Playgroud) signalr ×7
android ×6
java ×4
flutter ×2
asp.net ×1
c# ×1
chat ×1
dart ×1
eclipse ×1
java-client ×1
long-polling ×1
service ×1
signalr-hub ×1
websocket ×1