2016-02-24 83 views
5

它的失敗@勢必低於線 -

bindService(intent, m_serviceConnection, Context.BIND_AUTO_CREATE); 

下面是跟蹤....

Activity com.example.alwaysrunningprocesswithcallanswertap.MainActivity has leaked ServiceConnection c[email protected]e794142 that was originally bound here 
android.app.ServiceConnectionLeaked: Activity com.example.alwaysrunningprocesswithcallanswertap.MainActivity has leaked ServiceConnection c[email protected]e794142 that was originally bound here 
    at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:1077) 
    at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:971) 
    at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1774) 
    at android.app.ContextImpl.bindService(ContextImpl.java:1757) 
    at android.content.ContextWrapper.bindService(ContextWrapper.java:539) 
    at com.example.alwaysrunningprocesswithcallanswertap.MainActivity.onCreate(MainActivity.java:48) 
    at android.app.Activity.performCreate(Activity.java:5990) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2390) 
    at android.app.ActivityThread.access$800(ActivityThread.java:151) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:135) 
    at android.app.ActivityThread.main(ActivityThread.java:5257) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

MainActivity.class

public class MainActivity extends Activity 
{ 
    CallNotifierService m_service; 
    boolean isBound = false; 

    private ServiceConnection m_serviceConnection = new ServiceConnection() 
    { 
     @Override 
     public void onServiceConnected(ComponentName className, IBinder service) 
     { 
      m_service = ((CallNotifierService.MyBinder)service).getService(); 
      Toast.makeText(MainActivity.this, "Service Connected", Toast.LENGTH_LONG).show(); 
      isBound = true; 
      Intent intent = new Intent(MainActivity.this, CallNotifierService.class); 
      startService(intent); 
     } 

     @Override 
     public void onServiceDisconnected(ComponentName className) 
     { 
      Toast.makeText(MainActivity.this, "Service Dis-connected", Toast.LENGTH_LONG).show(); 
      m_service = null; 
      isBound = false; 
     } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Intent intent = new Intent(this, CallNotifierService.class); 
     bindService(intent, m_serviceConnection, Context.BIND_AUTO_CREATE); 
    } 

    . 
    . 
    . 

} 

回答

11

您需要在代碼中添加此。

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    unbindService(m_serviceConnection); 
    Toast.makeText(MainActivity.this, "Service Un-Binded", Toast.LENGTH_LONG).show(); 
}; 
相關問題