Tag: 服务

服务不写入SharedPreferences

所以,我有一个在后台处理播放音频文件的服务。 我想能够将服务写入SharedPreferences以便可以根据服务的当前状态更新UI,比如当应用程序从前台 – >后台 – >前台再次运行时。 不幸的是,从服务写入SharedPreferences似乎是不可能的。 我真的不想使用任何静态变量,所以我认为当发生状态变化时,将服务的状态写入后台将是最佳的。 这里是SharedPreferences代码,它真的没什么新意。 private fun saveAudioServiceStateToSharedPreferences(isRunning: Boolean) { d { "saving state: [${isRunning}]" } val sharedPref = PreferenceManager.getDefaultSharedPreferences(this) val editor = sharedPref.edit() editor.putBoolean(getString(R.string.preference_is_audio_service_running), isRunning) editor.commit() } fun isAudioServiceRunning(context: Context): Boolean { val sharedPref = PreferenceManager.getDefaultSharedPreferences(context) val isRunning = sharedPref.getBoolean(context.getString(R.string.preference_is_audio_service_running), false) if (!isRunning) { d { "Audio service is NOT […]

服务正在创建mediaplayer的新实例

我有一个服务问题。 在方法onCreate我创建媒体播放器。 当我在活动之间移动时,我能够顺利地访问服务,并保持相同的媒体播放器实例。 虽然,当我离开应用程序(音频从服务mediaplayer仍在播放),然后我回到应用程序 – 我得到新的MediaPlayer实例。 来自先前实例的音频流仍在播放。 我想访问相同的MediaPlayer实例,以便操纵播放歌曲(例如暂停)。 你知道可能是什么问题吗? class PlayerService : Service(), MediaPlayer.OnPreparedListener, PlayerServiceContract.ServiceContract { private val mBinder = PlayerBinder() private var mPlayer: MediaPlayer? = null private var mPresenter: PlayerServiceContract.Presenter? = null private var mRecording: Recording? = null override fun onCreate() { super.onCreate() mPlayer = MediaPlayer() mPlayer?.setWakeMode(applicationContext, PowerManager.PARTIAL_WAKE_LOCK) mPlayer?.setAudioStreamType(AudioManager.STREAM_MUSIC) mPlayer?.setOnPreparedListener(this)

在后台运行服务

我对Android开发非常陌生,而且我并没有真正了解IntentServices是如何工作的。 这是我迄今为止: class TimerActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_timer) findViewById(R.id.startBtn).setOnClickListener { startService(Intent(this@TimerActivity, TimerService::class.java)) } findViewById(R.id.stopBtn).setOnClickListener { stopService(Intent(this@TimerActivity, TimerService::class.java)) } } } class TimerService : IntentService("TimerService") { override fun onCreate(){ super.onCreate() toast("Started activity") } override fun onDestroy(){ super.onDestroy() toast("Stopped activity") } override fun onHandleIntent(intent: Intent?) { } } 我试图在后台点击一个按钮开始一个活动,并停止点击另一个。 但是为什么onDestroy()会在onCreate()之后立即被触发,没有我点击停止按钮? 谢谢

调用startService()方法发送otto事件后如何知道服务何时启动?

我有AlarmReceiver( BrodcastReceiver )启动DownloadService( Service )后,检查服务是否运行状态 context.startDownloadServiceIfNotRunning()// kotlin extension function check service state 在这一行之后,我正在发送otto事件到以前启动的服务 BusStation.getBus().post(DownloadEvent()) // Actually this line fired before start of service 但是即使是注册了事件,下载服务也没有收到这个事件。 在调试之后,我发现Otto事件在服务实际启动之前正在触发,因此它没有收到任何事件 所以有没有什么办法知道什么时候android服务正常启动,以接收otto事件

检测覆盖中的触摸事件并进一步传递

我想做一个overlay手势检测器,将显示在所有其他应用程序之上。 覆盖将从Service启动。 我已经做了示例服务,只是为了检查触摸覆盖图标的触摸事件是否可以以某种方式记录并进一步调度到当前活动的应用程序: class GestureDetectorService : Service() { override fun onBind(intent: Intent?): IBinder? = null val windowManager: WindowManager get() = getSystemService(Context.WINDOW_SERVICE) as WindowManager var iv: AppCompatImageView? = null override fun onCreate() { super.onCreate() iv = AppCompatImageView(this) iv?.setImageResource(R.drawable.icon) iv?.setOnTouchListener { view, motionEvent -> when (motionEvent.action) { MotionEvent.ACTION_DOWN -> { Log.d("Click", "From icon") false } else -> […]

这是用图像(Android / Kotlin)离线保存大量数据的最佳方法。

请建议使用图片(Kotlin)离线保存数据的最佳方法。 该应用程序需要离线运行,以便从Web服务获得10,000个产品。 我需要离线保存图像。 请分享您的宝贵评论。 选项 同步适配器 运行服务以保存数据 问题可能会面临 抓取数据时应用程序可能关闭。