Articles of 处理程序

检查Android处理程序是否有callback

我有一些代码,它设置了一个计时器,但是如果用户在使用时设置了计时器,我需要删除运行该计时器的runnable并重新启动它。 但是,当没有处理程序callbackrunnable存在,这个代码被称为它崩溃我的应用程序。 所以我需要检查一个处理程序是否正在运行,如果是,然后结束并重新启动它,但通过文档和其他Stackoverflow的问题,我看不出这是可能的。 这里是我的代码,我已经评论了只有在处理程序可运行的情况下才应该执行的代码: submitTimer.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { String s = timer.getText().toString(); if(!s.equals("")) { //I NEED TO CHECK A RUNNABLE HANDLER EXISTS AND IF SO THEN RUN THIS CODE, IF NOT IGNORE THIS CODE Map.handler.removeCallbacks(Map.getRunnable()); Map.runnable.run(); //I NEED TO CHECK A RUNNABLE HANDLER EXISTS AND IF SO THEN RUN THIS CODE, IF […]

唤醒lockingandroid服务重复

我有这个应用程序需要运行一个服务(背景),周期性地发出嘟嘟声。 手机需要每隔一分钟哔一声,持续5秒钟(在服务中使用一个处理程序)。 我已经实现了这个完美的服务,但是当手机进入深度睡眠模式时,这个处理程序的执行停止。 在这个问题中使用这个答案,我设法使用唤醒锁,它工作正常。 但是,当我明确地把手机置于深度睡眠模式时,处理程序停止执行。 我在哪里放置唤醒服务。 下面的代码片段。 public class PlaySound extends Service{ PowerManager.WakeLock wl ; PowerManager pm; private SoundManager mSoundManager; boolean wakeUpFlag = false; @Override public void onCreate(){ super.onCreate(); mSoundManager = new SoundManager(); mSoundManager.initSounds(getBaseContext()); mSoundManager.addSound(1, R.raw.sound); } @Override public int onStartCommand(Intent intent, int flags, int startId) { startservice(); return START_STICKY; } private void startservice() { […]

ScrollView内容更新

我有一个编程生成的ScrollView里面有一个TextView 。 我希望不时更新TextView的文本,并且已经实现了一个处理函数来更新TextView GUI元素。 这似乎调用/正常工作。 但是,目前我发现实际上让TextView显示附加信息的唯一方法是调用: consoleText.append("New text to add to TextView"); // then: myScrollView.removeView(myTextView); myScrollView.addView(myTextView); 这不是特别优化,并想知道如何刷新ScrollView的内容来显示我的新增信息… 也: invalidate(); postvalidate(); 似乎没有做任何事情 – TextView对象有新的文本(查看debugging),它只是没有绘制到屏幕上,除非我调用添加/删除function。 感谢您提供的任何信息/帮助 FR

Androids Handler.post,究竟发生了什么事情

自从几天以来,我试图找出如果我执行代码到底发生了什么 void function(){ //somePreExecutionCode new Handler().post(new Runnable(){ @Override public void run(){ //someCode } }); } 看起来好像不会阻塞UI,所以调用function()的button不会卡在点击位置,直到someCode完成。 但是,如果某个PreExecutionCode启动一个progressBar,那么当某个代码完成时,progressBar将完全显示在同一时刻。 我知道,有AsyncTasks,但有没有其他的可能? 和最新的区别 new Handler().post 和 View.post ?

Android – 使用处理程序?

在同一个活动中使用多个处理程序是否有任何问题? 我注意到,在android官方网站提供的所有示例中,他们使用单个处理程序,并根据“what”的值检测不同的操作,这是由于内存pipe理和Handler使用的大量内存? 或者我应该把它称为“不好的代码”,并做到这一点干净的方式(每个负责特定任务的多个处理程序) Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0){ // do something } else if (msg.what == 1){ // do something else } } } 要么 Handler taskHandlerA = new Handler() { @Override public void handleMessage(Message msg) { // do something } } Handler taskHandlerB […]

如何在android studio中正确使用postDelayed()?

我有一个countDownTimer,如果用户没有在第12秒内击中gameButton,我想要调用gameOver方法。 问题或者当countDownTimer是12或者定时器只是继续倒计时时,我会得到称为instamtly的游戏function。 所以我正在尝试使用postDelayed()方法给用户一个完整的秒击中button,让countDownTimer继续,但因为我的代码是现在的游戏停在12不pipe。 import android.app.Activity; import android.os.CountDownTimer; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; public class GameScreen extends Activity { private TextView time; private Button start; private Button cancel; private Button gameButton; private CountDownTimer countDownTimer; public static int count = 0; public static int countFail = 0; final […]

为什么getHandler()返回null?

我有以下问题。 我正在像这样在单独的线程中在mapview上绘制路线: public void drawRoute(final MapView mapView) { new Thread(new Runnable() { public void run() { try { //Do something useful } catch (SomeException se) { Handler handler = mapView.getHandler(); handler.post(/*show error in UI thread*/) }} }).start(); } 但是,当我得到处理程序它返回空,虽然在debugging模式处理程序返回并显示错误消息。 问题是什么? PS可能是得到处理程序的不正确的方式,但我找不到有关它的信息。

Android微调closures

我有一个微调的活动,我想知道是否有可能以编程方式closures微调,如果用户打开它。 整个故事是在后台我正在一个单独的线程上运行一个进程。 当这个过程完成后,我会在主要活动上调用一个Handler,并根据结果执行一些任务。 那么,我想closures微调,用户打开它。 微调框在main.xml布局中: <Spinner android:id="@+id/birthPlaceSpinner" android:layout_weight="1" android:layout_height="wrap_content" android:prompt="@string/select" android:layout_width="fill_parent" /> 这是处理程序: private class BirthplaceChangedHandler extends Handler { @Override public void handleMessage(Message msg) { String placeFilterStr = birthPlaceFilterText.getText().toString(); if ("".equals(placeFilterStr) || placeFilterStr == null || validNewAddresses.isEmpty()) { birthPlaceSpinner.setEnabled(false); hideGeoLocationInformation(); } else { birthPlaceSpinner.setEnabled(true); } adapter = new ArrayAdapter<String>(getApplicationContext(), R.layout.multiline_spinner_dropdown_item, validNewAddressesStr) birthPlaceSpinner.setAdapter(adapter); } } 干杯!

android延迟使用处理程序

我想显示几个图像,并在每个图像之间添加一个延迟。 我这样做,没有在代码中的错误,但由于某种原因,应用程序崩溃。 Bitmap bitmap = BitmapFactory.decodeFile(imageIn); ImageView myImageView = (ImageView)findViewById(R.id.imageview); myImageView.setImageBitmap(bitmap); // Those are the only 2 lines I used to make my handler Handler handlerTimer = new Handler(); handlerTimer.postDelayed((Runnable) this, 20000);

onBackPressed杀死一个活动中的处理程序 – Android

正如你所看到的,我有这个PlayLesson_01活动,它同时显示图像和audio。 这个活动有两个处理程序,一个控制图像和audio,另一个完成课程并返回上一个活动(课程菜单)。 目标 :点击硬返回button返回上一个活动,并停止播放图像和audio。 问题 :当我点击困难的“返回”时,我可以回到之前的活动,但audio仍在播放。我无法停止或终止在活动中启动的处理程序。 问题 :我怎样才能完全杀死或阻止这些处理程序? import android.app.Activity; import android.content.Context; import android.content.Intent; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.animation.AnimationUtils; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.BaseAdapter; import android.widget.Gallery; import android.widget.ImageSwitcher; import android.widget.ImageView; import android.widget.RelativeLayout.LayoutParams; import android.widget.ViewSwitcher.ViewFactory; public class PlayLesson_01 extends Activity implements OnItemSelectedListener, […]