2015-02-24 41 views
0

的Android服務這裏是我的代碼:不停止自我

   @Override public boolean onTouch(View v, MotionEvent event) { 
      switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 

       // Get current time in nano seconds. 
       long pressTime = System.currentTimeMillis(); 


       // If double click... 
       if (pressTime - lastPressTime <= 300) { 
        createNotification(); 
        ServiceFloating.this.stopSelf(); 
        mHasDoubleClicked = true; 
       } 
       else {  // If not double click.... 
        mHasDoubleClicked = false; 
       } 
       lastPressTime = pressTime; 
       initialX = paramsF.x; 
       initialY = paramsF.y; 
       initialTouchX = event.getRawX(); 
       initialTouchY = event.getRawY(); 
       break; 
      case MotionEvent.ACTION_UP: 
        if(event.getRawX() - initialTouchX >40) 
       { 
        paramsF.x = (int)dispwidth; 
        paramsF.y = initialY + (int) (event.getRawY() - initialTouchY); 
        ObjectAnimator animY = ObjectAnimator.ofFloat(layout, "translationX", 100f, 0f); 
        animY.setDuration(1000);//1sec 
        animY.setInterpolator(new BounceInterpolator()); 
        animY.setRepeatCount(0); 
        animY.start(); 
       } 
       else if(initialTouchX-event.getRawX()>40){ 
        paramsF.x = 0; 
        paramsF.y = initialY + (int) (event.getRawY() - initialTouchY); 
        ObjectAnimator animY = ObjectAnimator.ofFloat(layout, "translationX", -100f, 0f); 
        animY.setDuration(1000);//1sec 
        animY.setInterpolator(new BounceInterpolator()); 
        animY.setRepeatCount(0); 
        animY.start(); 
       } 
       windowManager.updateViewLayout(layout, paramsF); 
       break; 
      case MotionEvent.ACTION_MOVE: 
       paramsF.x = initialX + (int) (event.getRawX() - initialTouchX); 
       paramsF.y = initialY + (int) (event.getRawY() - initialTouchY); 
       windowManager.updateViewLayout(layout, paramsF); 
       break; 
      } 
      return false; 
     } 
    }); 
} catch (Exception e) { 
    // TODO: handle exception 
} 

這是我的onDestroy()

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    if (safe != null) windowManager.removeView(safe); 
} 

safeLinearLayout在我的窗口管理對象在我的OnCreate 服務啓動和運行重視精細。當我點擊一個按鈕的調用stopService(new Intent(MainActivity.this, ServiceFloating.class));從我的主要活動,我可以停止服務,但是當我嘗試從它自己的觀點與Fatal signal 11 error

停止服務應用程序崩潰並重新啓動我怎麼能阻止它自己的服務視圖?

回答

0

嘗試停止服務內部的服務,例如,當您按下按鈕時,從活動向服務發送消息。您需要將活動綁定到服務以便能夠發送和接收消息。

我用當服務從活動收到停止消息這個方法:

stopForeground(true); 
stopSelf(); 
+0

但我不希望它從活動停止。 – user3677331 2015-02-24 20:51:26

+0

我不明白你的意思,從它自己的角度停止服務。服務沒有任何佈局。你想從哪裏阻止它? – masana 2015-02-24 21:22:54

+0

https://play.google.com/store/apps/details?id=com.boatmob.floating.touch&hl=en這種事情正在通過服務來完成,並將視圖添加到窗口管理器 – user3677331 2015-02-24 21:44:37