我正在尝试创建服务。 我创建了一个服务和我的活动。但是当我开始活动时,服务变为2。 因为第一次服务,第二次服务第二次服务。看到我的代码并帮助我,我错过了什么?
主要活动。
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startService(new Intent(getBaseContext(), MyService.class));
}
}
我不是在这里停止服务,因为我想在每10秒后在服务器上发送信息,当用户运行我的应用程序时,应用程序开始在服务器上发送数据。 如果我的用户完成()活动,服务仍然有效,但如果用户点击退出/退出按钮,服务将停止工作。
Myservice.java
public class MyService extends Service {
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// Let it continue running until it is stopped.
final Handler h1 = new Handler();
new Thread(new Runnable() {
public void run() {
while (true) {
try {
Thread.sleep(10000);
h1.post(new Runnable() {
public void run() {
System.out.println("lay g jnab");
}
});
} catch (Exception e) {
}
}
} }).start();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
}
}
请帮助我?
答案 0 :(得分:0)
尝试实施前台服务。 foreground service
前台服务显示通知,并且永远不会被活动关闭停止。并且可以在需要时停止。
在您的服务中实施此代码段
Notification notification = new Notification(R.drawable.icon, getText(R.string.ticker_text),
System.currentTimeMillis());
Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);
notification.setLatestEventInfo(this, getText(R.string.notification_title),
getText(R.string.notification_message), pendingIntent);
startForeground(ONGOING_NOTIFICATION_ID, notification);
答案 1 :(得分:-1)
尝试使用BroadcastReceiver代替服务
Br.Java
public class Br extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
// your functionality
}
}
MainActivity.Java
Intent multiAlarmIntent = new Intent(MainActivity.this, Br.class);
PendingIntent multiAlarmPendingIntent = PendingIntent.getBroadcast(MainActivity.this, MULTI_ALARM_RC, multiAlarmIntent, NO_FLAGS);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 1000,1000*60*60*10, multiAlarmPendingIntent);
的Manifest.xml:
<activity
android:name="com.example.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="com.example.Br"
android:process=":remote"/>