简体   繁体   English

为什么不调用onStart?

[英]Why is onStart is not called?

I am trying to implement a very simple service example. 我正在尝试实现一个非常简单的服务示例。 The user inputs the value through EditText and clicks on Calculate Button. 用户通过EditText输入值,然后单击Calculate Button。 The Calculate button triggers a service which performs some calculations and sends the result back to another EditText box. “计算”按钮触发服务,该服务执行一些计算并将结果发送回另一个EditText框。 If I use a simple service without binding, the result gets displayed before the calculation is performed, so I want to use a bound service. 如果我使用没有绑定的简单服务,那么在执行计算之前将显示结果,因此我想使用绑定的服务。 But in my case, the control just stops at onBind call and onStart does not get executed. 但就我而言,该控件仅在onBind调用处停止,并且onStart不会执行。 The control does flow to onCreate though. 控件确实流向onCreate。 Could anyone help me to find where I am going wrong? 谁能帮我找到我要去的地方?

public class SimpleService extends Service {
    private final IBinder mBinder = new LocalBinder();


    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        System.out.println("Service: OnBind");
         return mBinder;
    }

    public class LocalBinder extends Binder {

        SimpleService getService() {
            System.out.println("Service: in Local binder");

            return SimpleService.this;
        }
    }

    @Override
    public void onCreate() {
        super.onCreate();
        System.out.println(" Service:In on create...");
        Toast.makeText(this,"Service created ...",         Toast.LENGTH_LONG).show()
    }

    @Override
    public void onDestroy() {
       super.onDestroy();
       System.out.println(" Service:in on destroy...");

       Toast.makeText(this, "Service destroyed ...", Toast.LENGTH_LONG).show();
    }

@Override
public void onStart(Intent intent, int startid) {
  System.out.println("Service:in onstart command ...");
  super.onStart(intent, startid);
  int res;
  String LOG_TAG =  "";
  int input2 = intent.getIntExtra("input", -1);
  int mode = intent.getIntExtra("mode", -1);
  String aString = Integer.toString(mode);
  Log.v(LOG_TAG, aString);
  if(mode == 1) {
         res = cal_F(input2);
    } else {
         res = cal_C(input2);
    }

  intent.putExtra("result", res);
     }

    }
#
 public class ClassExamplesServiceActivity extends Activity implements OnClickListener{ @Override public void onClick(View v) { input = Integer.parseInt(input1.getText().toString()); if(v.getId() == R.id.radio_fib) rd_button = 0; else if(v.getId() == R.id.radio_fact) rd_button = 1; else if (v.getId() == R.id.button1){ intent = new Intent(this, SimpleService.class); intent.putExtra("input", input); intent.putExtra("mode", rd_button); doBindService(); System.out.println("in class activity "+System.currentTimeMillis()); } else if(v.getId() == R.id.stop) { stopService(intent); } } private ServiceConnection mConnection = new ServiceConnection() { public void onServiceConnected(ComponentName className, IBinder service) { System.out.println("\\n in service connection"); mBoundService = ((SimpleService.LocalBinder)service).getService(); } public void onServiceDisconnected(ComponentName className) { System.out.println("\\n in service disconnected"); mBoundService = null; } }; void doBindService() { System.out.println("in do bind service"); boolean isConnected = bindService(new Intent(ClassExamplesServiceActivity.this, SimpleService.class), mConnection, Context.BIND_AUTO_CREATE); intent.putExtra("input", input); intent.putExtra("mode", rd_button); System.out.println("\\n isconnected = "+ isConnected); mIsBound = true; } void doUnbindService() { if (mIsBound) { res = intent.getIntExtra("result", -1); result.setText(Integer.toString(res));// Set the result in the EditText // Detach our existing connection. unbindService(mConnection); mIsBound = false; } } @Override protected void onDestroy() { super.onDestroy(); doUnbindService(); } } 
#
 <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:label="@string/app_name" android:name=".ClassExamplesServiceActivity" > <intent-filter > <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".SimpleService"></service> </application> 

您需要调用Context.startService()才能使用onStart(): http : //developer.android.com/reference/android/content/Context.html#startService (android.content.Intent)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM