/**********************************************/
// MyActivity extends Activity
/**********************************************/
...
Intent sendIntent = new Intent(getApplicationContext(), ServiceThread_Send.class);
sendIntent.putExtra(ServiceThread_Send.KEY_MESSAGE, message);
sendIntent.putExtra(ServiceThread_Send.KEY_RECEIVER_PHONE_NUMBER, receiver);
startService(sendIntent);
// I won't get the error message if I don't call the following method.
finish();
/**********************************************/
// ServiceThread_Send extends IntentService
/**********************************************/
protected void onHandleIntent(Intent intent)
{
...
new SendingThread(receiverPhoneNumber, textMessage, this).start();
}
/**********************************************/
// SendingThread extends Thread
/**********************************************/
public void run()
{
bindService(intent, mConnection, Context.BIND_AUTO_CREATE|Context.BIND_ABOVE_CLIENT);
}
这就是我得到的:
ServiceThread_Send已泄漏最初绑定的ServiceConnection SendingThread $ 1 @ 419a18d0
答案 0 :(得分:0)
如果您将其作为IntentService,那么启动另一个线程的需求是什么。
Intent服务已经在工作线程中工作,所以不需要在那里启动另一个线程。
只是你的工作,当你在onHandleIntent
有意图,然后意图服务将自己调用stopSelf
。
答案 1 :(得分:0)
我找到了答案:
因为我使用过IntentService,它会完成它的工作,然后自己调用selfStop()。结果,最初绑定在那里的任何服务都被泄露了。我所做的就是改变:
bindService(...);
对此:
getApplicationContext.bindService(...);
一切都像魅力一样。 ; - )