Android O – 后台服务限制无法按预期工作
我只是根据Android O背景限制测试我现有的Android应用程序。
在测试中,我发现了一种奇怪的行为。 所以基本上在我的应用程序中,我正在使用后台服务,我在第一个活动中启动它。
所以现在问题是一旦活动和后台服务开始,我正在使用后退按钮关闭我的活动。 因此,根据服务概念,它会在后台运行。
大约1分钟后, onDestroy()
方法被调用后台服务,但服务仍然在运行。 理想情况下,根据文档,它应该被杀死。
所以,我不知道这是一个问题还是什么问题。
作为参考,我创建了一个反映相同场景的示例代码,如下所示:
脚步
- 开始申请
- 单击“开始后台服务”按钮。
- 使用后退按钮关闭应用程序。
HomeActivity.java
package com.icpl.otest; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import com.icpl.otest.service.MyService; public class HomeActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); } public void onStartServiceClick(View view) { Intent serviceIntent = new Intent(this, MyService.class); startService(serviceIntent); } }
MyService.java
package com.icpl.otest.service; import android.app.Service; import android.content.Intent; import android.os.Handler; import android.os.IBinder; import android.util.Log; public class MyService extends Service { private static final String TAG = "MyService"; private Handler mHandler; public MyService() { Log.i(TAG, "MyService constructor called."); mHandler = new Handler(); } @Override public IBinder onBind(Intent intent) { throw new UnsupportedOperationException("Not yet implemented"); } @Override public int onStartCommand(Intent intent, int flags, int startId) { Log.i(TAG, "onStartCommand with intent:- " + intent); startShowingVisibility(); return START_NOT_STICKY; } private void startShowingVisibility() { mHandler.postDelayed(new Runnable() { @Override public void run() { Log.i(TAG, "I am alive"); startShowingVisibility(); } }, 3000); } @Override public void onDestroy() { Log.i(TAG, "onDestroy()"); super.onDestroy(); } }
大约1分钟后,onDestroy()方法被调用后台服务,但服务仍然在运行
不,不是的。 您的服务可能已经开始的工作可能继续(在您的情况下,您的无限Handler
“循环”)。 但是,您的流程可能随时终止。
- Android ksoap2通过https
- Joda LocalTime Meridiem解析
- 使用查询字符串在Android SQLiteDatabase中执行插入/更新/删除的正确方法是什么?
- Android如何从SharedPreference设置EditTextPreference的默认值?
- 更新ListView行中与数据库行对应的CheckBox
- Android使用Multi thread更快地下载文件
- java.lang.NumberFormatException:预期为int但在第1行第8454行为0.6
- 如何将Hash表Arraylist转换为其他意图?
- 从http get请求中读取非英语字符