在我的应用中,我通过推送器立即从我的服务器收到我的消息。我创建了一个服务,用于处理连接并向我的应用程序中的其他活动发送广播消息。
我现在面临的问题是让这个服务在新线程中运行,即使我的应用程序转到后台也能运行它。我从this发现我应该创建并将其连接到"服务线程",但是我找不到推送器的示例。
如果有人可以,请你提供一个例子吗?如果没有,那么使用这些"服务线程编写代码的见解"也会有所帮助。在此先感谢您的帮助:D
PusherService.java
公共类PusherService扩展了服务{
private static final String TAG = "PusherService";
private Pusher pusher = new Pusher("myKey");
private Channel channel = pusher.subscribe("cafe_channel");
private JSONObject pusherJSONObj;
private Order order;
public PusherService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//this service will run until we stop it
setupPusher();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Stopped", Toast.LENGTH_LONG).show();
}
private void setupPusher() {
Log.d(TAG, System.currentTimeMillis()+"");
channel.bind("customer_order", new SubscriptionEventListener() {
@Override
public void onEvent(String channelName, String eventName, final String data) {
Intent broadcastIntent = new Intent();
try {
pusherJSONObj = new JSONObject(data);
order = new Order(pusherJSONObj);
broadcastIntent.setAction("customer_order");
broadcastIntent.putExtra("message", "success");
broadcastIntent.putExtra("order", order);
} catch (JSONException e) {
e.printStackTrace();
Log.d("Pusher", "conversion failed");
broadcastIntent.setAction("customer_order");
broadcastIntent.putExtra("message", "JSON conversion error");
}
sendBroadcast(broadcastIntent);
}
});
pusher.connect();
}
}
OrdersActivity.java
private BroadcastReceiver pusherReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equalsIgnoreCase("customer_order")) {
adapter.newOrder((Order) intent.getParcelableExtra("order"));
}
}
};
答案 0 :(得分:0)
事实证明,一个进程的多线程并不能解决我的问题。
相反,我将服务拆分为一个新流程,这将使服务运行独立于主线程的状态。处理。经过测试,发现当我的活动进入后台时服务不会停止。