为什么onStart没有被调用?

2023-12-09

我正在尝试实现一个非常简单的服务示例。 用户通过 EditText 输入值并单击计算按钮。计算按钮会触发一个服务,该服务执行一些计算并将结果发送回另一个 EditText 框。 如果我使用没有绑定的简单服务,则在执行计算之前会显示结果,因此我想使用绑定服务。但就我而言,控件仅在 onBind 调用处停止,并且 onStart 不会执行。不过,控制确实流向了 onCreate。谁能帮我找出我哪里出错了?

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)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么onStart没有被调用? 的相关文章

随机推荐

  • Plotly:带有下拉菜单的散点图,用于更改数据和计算注释

    我正在尝试制作一个带有 2 个下拉菜单的散点图 用于选择要绘制 x 轴和 y 轴的数据列 来自 pandas 数据框 我还希望该图具有随下拉选择而变化的相关统计注释 因为注释是根据 x 和 y 数据作为参数计算的 我已经成功地使用下面的代码
  • 使用操作按钮刷新主面板屏幕

    我正在构建一个闪亮的应用程序 我想刷新主面板屏幕 这是示例代码 我有一个提交按钮来显示数据 我有一个刷新按钮来清除屏幕 我不太确定如何在 R 和闪亮中编写重新刷新按钮的代码 因为我对此很陌生 感谢您的关注 library DT ui lt
  • React hooks useEffect 第二次调用 API 和第一次调用 API 响应也返回

    我正在使用 useEffect 获取 API 并且 API 响应正确 例如 response message This is a image link status success error null 第二次 当我收到下一个 API 调用
  • 在 Android 中的 ViewPager 中将子 Fragment 添加到父 Fragment

    I m developing an app that has some tabs something like this 每个选项卡都是一个 Fragment 每个 Fragment 显示文章 类别和一些其他信息的列表视图 我想做的是 当我
  • 千字节/兆字节/太字节的表示

    我对不同字节单位的表示有点困惑 自始至终都认为 1 字节 8 位 然而 在很多来源中我看到 1 KB 2 10 字节 1024 字节 AND 1 KB 1000 字节 这不就是顶撞在这两种情况下都规定 1 字节是 8 位 不同的来源对这些不
  • GDI+ 通用错误

    当我的图像从网络服务器上的数据库加载时 我看到以下错误 GDI 中发生一般错误 在 System Drawing Image Save Stream流 ImageCodecInfo编码器 编码器参数 encoderParams at Sys
  • SoapClient 未发送证书

    我一直在阅读我能找到的所有问题 答案 但没有一个能解决我的问题 这是使用 cURL 和证书连接到同一 URL pem pem 文件的绝对路径 这有效 ch curl init wsdl curl setopt ch CURLOPT SSL
  • 编写XSL对xml数据执行一些操作

    如何在 products xsl 正文中编写 xsl 以获取数量 gt 10 的产品名称和状况 产品 xml
  • Rails 5.2 ActiveStorage 未定义方法 `signed_id' for nil:NilClass

    我实现了从我的中删除图像的代码User model Rails 5 2 Active Storage 清除 删除附件 我认为它删除了图像 但现在我收到错误 undefined method signed id for nil NilClas
  • 调用 EnvelopesApi#update_document_tabs 返回错误

    我想一次更新文档的所有选项卡 该文档的信封是根据已定义收件人和选项卡的模板创建的 我正在调用this具有以下有效负载的端点来更新选项卡 textTabs validationPattern validationMessage shared
  • 适用于 Windows Phone 7 的 Windows Live ID 身份验证

    我正在开发一个 Windows Phone 7 应用程序 但不想重新实现我自己的身份 身份验证服务 特别是当我们知道用户将使用 Windows Live 帐户登录时 但是我明白从这个线程Microsoft 不会授予对登录用户详细信息的访问权
  • 使用 Python 读取 MS-Word 文件中页眉和页脚中的表格内容

    这是我对这个问题的扩展问题 如何使用Python读取MS Word文件中表格的内容 YusuMishi 提供的解决方案很棒 但它没有捕获页眉和页脚中的页眉 Let me elaborate on that 使用代码 import win32
  • 如何优化这段javascript代码?

    如何优化这个功能呢 我可以为所有操作创建一个函数吗 b hat1 click function hat3 hide hat2 hide hat1 show b hat2 click function hat3 hide hat2 show
  • hibernate 和通用字段映射

    我想用 Hibernate 映射超类中的通用字段 我的妈妈班是 Entity Table name ParameterValue Inheritance strategy InheritanceType SINGLE TABLE Discr
  • 位移位、屏蔽还是位域结构?

    我是使用位的新手 我正在尝试使用现有协议 该协议可以发送三种不同类型的消息 类型1是16位结构 struct digital unsigned int type 2 unsigned int highlow 1 unsigned int s
  • 如何将aidl文件添加到Android studio(来自应用内计费示例)

    我目前正在将 Eclipse 应用程序迁移到 Android Studio 此应用程序使用应用程序内计费 我的主要问题是编译项目和aidl文件 我猜你们都使用这个文件 我收到此错误消息 Gradle error cannot find sy
  • 将两个ScrollView连接在一起

    这是我一直在解决的一个棘手的 iPhone 问题 我在页面上有三个 UIScrollView 一个仅水平滚动 一个仅垂直滚动 一个既水平又垂直滚动 我想将视图锁定在一起 以便水平滚动视图的水平位置与主滚动视图的水平位置匹配 垂直滚动视图同样
  • javax 与 java 包

    javax 包背后的基本原理是什么 java 和 javax 分别包含哪些内容 我知道很多企业包都在 javax 中 但 Swing 新的日期和时间 api JSR 310 以及其他 J2SE 包也是如此 起初javax旨在用于扩展 有时东
  • 将 HTML 从 JEditorPane 复制到外部应用程序时出现问题

    我在将 HTML 从 JEditorPane 复制到系统剪贴板然后粘贴到其他应用程序时遇到问题 OpenOffice 3 2 提示 请求的剪贴板格式不可用 Thunderbird 3 13 对粘贴不执行任何操作 Firefox 3 6 9
  • 为什么onStart没有被调用?

    我正在尝试实现一个非常简单的服务示例 用户通过 EditText 输入值并单击计算按钮 计算按钮会触发一个服务 该服务执行一些计算并将结果发送回另一个 EditText 框 如果我使用没有绑定的简单服务 则在执行计算之前会显示结果 因此我想