Articles of android handler

AsyncTaskLoader基本示例。 (机器人)

我在我的应用程序中使用Loader,并根据我使用此Loader在COntacts上执行的查询得到的结果,我执行一些计算并将它们存储回Sqlite DB中。 我希望这个操作是异步的,但我在使用Async任务之间感到困惑,因为我要返回很多不同的数据types,或者我应该使用简单的处理程序或AsyncTaskLoader,我希望它很简单,因为我是新手装载机。 我试图搜索AsyncTaskLoader的例子,但它似乎是火箭科学,在我的场景的上下文中的三个中的任何一个的基本和简单的function示例将是非常有用的。

Job Scheduler与后台服务

我有一个应用程序,其functionA应该每分钟在后台运行。 functionA是应用程序应该连接到数据库,读取一些数据然后获取设备的当前位置,并根据它们检查条件,如果条件为真,它应该向用户发送状态栏通知,以便用户点击通知,将显示应用程序的UI并发生一些事情。 这个后台任务应该每分钟都运行一次,无论应用程序是否被使用,关闭,终止(例如facebook或Whatsapp向我们显示通知,无论它们是否在应用程序堆栈中)。 现在我已经搜索并发现Android提供Job Scheduler , 后台服务 , AlarmManager和处理程序 。 但是我越了解他们,这些陈述对我来说就越矛盾。 关于处理程序我已经读过它们不存在长时间延迟,并将在系统重启后终止。 所以他们不适合我的任务。 但是AlarmManager似乎是这个问题的一个很好的候选者,因为在允许的情况下它们甚至在系统重启后也存在,并且可以重新运行应用程序。 但在Android文档中,Alarm Manager旨在用于必须在特定时间运行的任务(如闹钟)。 但我的任务必须每分钟运行一次。 然后是后台服务。 这更像是我在阅读后在后台下载的任务,而不是用于我已经解释过的事情。 JobScheduler似乎不是为了必须永久完成的任务,而是为了满足特定约束的任务,如空闲或没有网络……那么你建议使用哪些(或其他的,如果它们存在)对于我在第一部分中解释的任务

与HandlerThread通信的示例

我想从GUI线程设置一个HandlerThread。 然后一段时间后,当在GUI上单击一个按钮时,它会运行callHello(),然后将消息发送到驻留在非GUI线程上的HelloLogger对象,该线程异步记录“Hello World”。 我已经尝试过很多东西,有些是无限期阻塞,有些是从不接收消息等等。下面的代码或多或少都和我一样近,请有人修改它吗? public class HandlerThreadExample { private MyHandlerThread mMyHandlerThread; private Looper mLooper; private Handler mHandler; public HandlerThreadExample(){ mMyHandlerThread = new MyHandlerThread(); mMyHandlerThread.start(); mLooper = mMyHandlerThread.getLooper(); } public void callHello() { mHandler.sendEmptyMessage(1); } private class MyHandlerThread extends HandlerThread { private HelloLogger mHelloLogger; private Handler mHandler; public MyHandlerThread() { super(“The MyHandlerThread thread”, HandlerThread.NORM_PRIORITY); } public […]

如何从服务中调用活动中的方法

有一种服务可以听取一些声音。 如果语音匹配字符串,则在服务对象中调用某个方法。 public class SpeechActivationService extends Service { public static Intent makeStartServiceIntent(Context pContext){ return new Intent(pContext, SpeechActivationService.class); } //… public void onMatch(){ Log.d(TAG, “voice matches word”); } //… } 这是我在我的活动中启动服务的方式: Intent i = SpeechActivationService.makeStartServiceIntent(this); startService(i); 从这个服务方法,我如何调用驻留在activity对象中的方法? 我不想从活动到服务,而是从服务到活动。 我已经阅读过有关处理程序和广播公司的内容,但无法find/理解任何示例。 有任何想法吗?

Job Scheduler与后台服务

我有一个应用程序,它具有每分钟应该在后台运行的functionA. functionA是应用程序应该连接到数据库,读取一些数据,然后获取设备的当前位置,并根据它们检查条件,如果条件为真,则应该向用户发送状态栏通知,以便当用户点击通知应用程序的用户界面将显示,并发生一些事情。 这个后台任务应该每分钟运行一次,无论应用程序是否被使用,closures,终止(就像facebook或Whatsapp向我们显示通知,无论他们是否在应用程序堆栈中)。 现在我已经search并发现Android提供了Job Scheduler , Background Service , AlarmManager和Handlers 。 但是,我越读到他们,这些陈述就越是矛盾。 1.关于处理程序我已经读过,它们不存在长时间的延迟,并将在系统重新启动后终止。 所以他们不适合我的任务。 2.但AlarmManager似乎是一个很好的候选人的问题,因为如果允许他们存在,即使系统重新启动,并可以重新运行应用程序。 但在Android文档中,警报pipe理器旨在用于必须在特定时间运行的任务(如闹钟)。 但我的任务必须每分钟运行一次。 3.然后是后台服务。 这是更多的任务,像我已经阅读的背景下载,并不打算做我已经解释的东西。 4. JobScheduler似乎不是一个需要永久完成的任务,而是完成特定约束的任务,比如空闲或者没有networking。 那么,这些(或者其他的,如果存在的话)是否推荐用于我在第一部分中解释的任务

如何在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 […]

谷歌地图API中的标记的GIFtypes的animationANDROID

我想要实现一个标记animation,如GIFanimation。 我有两个应该同时闪烁的图像。 我没有发现任何可以实现这一点在Android中。 我试图做的是,创build一个每1秒运行的处理程序,并且我正在设置标记的图标。 但它不起作用。 请引导我正确的方向。 我现在的代码如下。 Handler handler = new Handler(); Boolean marker_color_bool = true; //adding marker and sending the marker instance to marker_animation() method where handler is called. MarkerOptions marker = new MarkerOptions() .title(delivery_center_name) .snippet("This is the " + delivery_center_name + " location") .position(location) .icon(BitmapDescriptorFactory.fromResource(R.drawable.red_marker)); google_map.addMarker(marker); marker_animation(marker); marker_animation()方法 private final int ONE_SECONDS = […]

Bundle对象的突变

我正在使用遗留代码,我发现这个函数中有一个不一致的行为: @Override public void openFragment(final Class<? extends BaseFragment> fragmentClass, final boolean addToBackStack, final Bundle args) { long delay = 0; if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) { delay = getResources().getInteger(android.R.integer.config_shortAnimTime) * 2; } // FIXME: quick fix, but not all cases final Bundle args666 = args != null ? (Bundle) args.clone() : null; new Handler().postDelayed(new Runnable() { @Override public […]

缺lessAndroid Studio中的android.os.handler对象

我试图在我的应用程序中创build一个Handler线程,但Android Studio将我的文本标记为红色,并且只会尝试导入处理程序的java.util版本而不是Android SDK版本。 当试图手动导入我能够findHandlerThread就好了,但正常的处理程序导入似乎缺less。 任何想法为什么?

Android AsyncTask vs Thread + Handler vs rxjava

我知道这是被问了很多次的问题。 然而,我从来没有find答案。 所以希望有人能给我一些启示。 我们都知道AsyncTask和Thread是执行后台任务以避免ANR问题的选项。 build议asynctask只能用于短时间运行的任务,而线程可以用于长时间运行的任务。 众所周知,Asynctask不应该用于长时间任务的原因是由于Asynctask可能会在活动被破坏之后继续运行而引起的泄漏。 这是令人信服的。 但是,这也会导致其他一些问题: 线程是否也独立于活动生命周期? 因此,asynctask的风险也可以应用于线程。 那么为什么线程适合长时间运行的任务呢? 看起来asynctask的风险只适用于与活动一起使用。 如果我们在服务中使用它(而不是IntentService,因为IntentService在它的工作完成后就停止了),只要我们可以保证在服务停止的时候取消asyntask,我们可以把它用于长时间运行的任务吗? 这是不是意味着在服务中使用asynctask是无风险的? 我和rxjava玩了一段时间,真的很喜欢它。 它消除了需要担心线程的问题(除非你必须决定在哪个线程中订阅和观察发送的数据)。 从我所看到的,rxjava(与其他一些libs一起,如retrofits)似乎是asynctask和thread的完美替代品。 我想知道如果我们可以完全忘记他们,或者有任何具体的情况,rxjava无法实现什么asynctask和线程可以做,我应该知道的? 谢谢