【发布时间】:2015-05-30 09:24:23
【问题描述】:
主活动
public class MainActivity extends ActionBarActivity {
Context c=this;
Intent i;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b=(Button)findViewById(R.id.button1);
Button b1=(Button)findViewById(R.id.button2);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
i=new Intent(c,serv.class);
startService(i);
}
});
b1.setOnClickListener(new OnClickListener()
{
public void onClick(View v) {
stopService(i);
}
});
}
}
服务
class bob implements Runnable{
Thread ac;
public void run()
{
while(true)
{
Log.d("tag","RUNNING");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }
public class serv extends Service {
Thread ac;
public void onCreate() {
Log.d("tag","CREATED");
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d("tag","SERVICE STARTED");
ac=new Thread(new bob());
ac.start();
return Service.START_NOT_STICKY;
}
@Override
public void onDestroy() {
Log.d("tag","DESTROYED");
try{
ac.stop();
}catch(Exception e)
{e.printStackTrace();}
}
public IBinder onBind(Intent arg0) {
return null;
}
}
当我单击 StopService 按钮时,会调用 ondestroy() 消息,但我的线程继续运行。 日志如下:
03-26 16:48:45.065: D/tag(15674): 已创建
03-26 16:48:45.065: D/tag(15674): 服务开始
03-26 16:48:45.065: D/tag(15674): 正在运行
03-26 16:48:45.495: D/tag(15674): 正在运行
03-26 16:48:46.065: D/tag(15674): 正在运行
03-26 16:48:46.495:D/tag(15674):正在运行
03-26 16:48:47.065: D/tag(15674): 正在运行
03-26 16:48:47.495: D/tag(15674): 正在运行
03-26 16:48:48.065: D/tag(15674): 正在运行
03-26 16:48:48.505: D/tag(15674): 正在运行
03-26 16:48:48.615: D/tag(15674): 销毁
03-26 16:48:49.065: D/tag(15674): 正在运行
03-26 16:48:49.495: D/tag(15674): 正在运行
【问题讨论】:
-
你正在你的服务中创建一个新线程,你并没有停止......所以它会运行
-
@PreethiRao 我在 onDestroy() 中停止它
-
你不应该使用 Thread.stop() 它已被弃用..
-
@PreethiRao 那我应该用什么?
标签: java android multithreading service