0

我正在尝试通过使用服务启动线程来运行线程,但它不会启动。它甚至不会记录。

这是我的内部服务类。服务类创建一个新的后台线程并启动它。backgroundthread 和服务类都是内部类,因此它们可以访问变量。

public class MyService extends Service {
    private BackgroundThread background;
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        Toast.makeText(this, "My Service Created", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onCreate");
        background = new BackgroundThread();        
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onDestroy");
    }


    public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, startId, startId);
        Toast.makeText(this, "My Service Started", Toast.LENGTH_LONG).show();
        Log.d(TAG, "onStart");
        background.start();
        return startId;
    }
}

我通过以下方式在 MainActivity 中启动服务:

startService(new Intent(this, MyService.class));

这是我的清单:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >


    <activity
        android:name="com.example.antioversleepapp.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>
    <activity
        android:name="com.example.antioversleepapp.SettingsActivity"
        android:label="@string/title_activity_settings" >
    </activity>
    <activity
        android:name="com.example.antioversleepapp.InfoActivity"
        android:label="@string/title_activity_info" >
    </activity>
    <service android:enabled="true" android:name="com.example.antioversleepapp.MyService" />
</application>

请帮帮我

4

2 回答 2

1

这是我的内部服务类

这是不可能的。它要么需要是静态内部类(在这种情况下,您的<service>元素也需要更改),要么需要是单独的公共类。

backgroundthread 和服务类都是内部类,因此它们可以访问变量。

我没有看到您的服务需要“达到”的任何“变量”。此外,Android 不可能创建内部类的实例,因为它没有外部类的实例。

于 2013-07-31T12:45:52.220 回答
0

在您的启动服务按钮中尝试此代码,我希望它有效:

Intent intent = new Intent(MainActivity.this,Service.class);

MainActivity.this.startService(intent);
于 2013-07-31T12:53:40.177 回答