我创建了一个调用服务的活动,该服务创建了一个向服务器发送和接收一些数据的线程,我可以打开其他应用程序,服务和线程运行正常,但是当我关闭活动时,服务保持运行但线程停止工作。为什么???如何保持线程运行!!。
代码
活动
package com.connectus.app;
public class ConnectUsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_connect_us);
Intent startServiceIntent = new Intent(getApplicationContext(), ConnectUsService.class);
startService(startServiceIntent);
}
服务
package com.connectus.app;
public class ConnectUsService extends Service {
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Thread t=new Thread(new Runnable() {
private DataInputStream in;
private BufferedReader br;
private DataOutputStream out;
@Override
public void run() {
Socket server=null;
try{
server=new Socket("10.10.40.58",4444);
in = new DataInputStream(server.getInputStream());
br=new BufferedReader(new InputStreamReader(in));
out = new DataOutputStream(server.getOutputStream());
while(true){
out.writeUTF("aaaaa");
String leido=in.readUTF();
out.writeUTF("asdf");
Thread.sleep(60000);
}
}catch(IOException ioe){
ioe.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
}
});
t.start();
return START_STICKY;
}
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
}
这只是我代码的一部分,我希望它有所帮助。
答案 0 :(得分:0)
谢谢大家,最后我找到了解决方案。使用setForeground()方法是必要的,我刚刚将此代码添加到我的服务类中:
Notification note=new Notification();
startForeground(1337, note);
根据我的研究,此代码用于防止服务被自身杀死。
最好的问候!