【发布时间】:2014-04-10 20:06:29
【问题描述】:
我创建了一个调用服务的活动,该服务创建了一个向服务器发送和接收一些数据的线程,我可以打开其他应用程序并且服务和线程运行正常,但是当我关闭活动时,服务继续运行,但线程停止工作。为什么???我怎样才能保持线程运行!!。
代码
活动
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;
}
}
这只是我代码的一部分,希望对你有帮助。
【问题讨论】:
-
你一定有错误。请发布您的相关代码。
-
但是我在 Logcat 上看不到任何错误。让我把代码。
-
请给我们看代码
-
我遇到了类似的行为,但是我正在处理一个计划在启动时运行的后台服务,在仔细检查 logCat 后我开始知道操作系统是如何杀死我的进程的,我也尝试过将线程优先级设置为最高。这将是终止应用程序的正常消息,只需在 logCat 窗口上按 ctrl+c 并将其粘贴到文本编辑器中,然后检查它。
-
完成!,我添加了代码。有什么建议吗?
标签: android multithreading io android-activity android-service