Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/202.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关于计时器和动作…帮助----(安卓应用程序)_Android_Timer_Action - Fatal编程技术网

Android 关于计时器和动作…帮助----(安卓应用程序)

Android 关于计时器和动作…帮助----(安卓应用程序),android,timer,action,Android,Timer,Action,有一些问题! 我想在一秒钟后做一些动作,比如在5秒钟后更改单词。除了设置计时器外,我还设置了所有东西 我认为这对每个人来说都很容易,但我只是在3天内学会了安卓。 我应该怎么做?使用AlarmManager重复操作 例如: PendingIntent pintent = PendingIntent.getService(context, 0, new Intent(context, YourIntentHere.class), 0); AlarmManager alarm = (AlarmMana

有一些问题! 我想在一秒钟后做一些动作,比如在5秒钟后更改单词。除了设置计时器外,我还设置了所有东西

我认为这对每个人来说都很容易,但我只是在3天内学会了安卓。
我应该怎么做?

使用
AlarmManager
重复操作

例如:

PendingIntent pintent = PendingIntent.getService(context, 0, new Intent(context, YourIntentHere.class), 0);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pintent);
alarm.setRepeating(AlarmManager.RTC, Calendar.getInstance().getTimeInMillis(), iInterval, pintent);
因此,只需将您想要重复的逻辑封装在能够实现某个意图(活动或服务)的内容中即可

或者,你可以使用异步任务和睡眠,但我不建议这样做

另见:


对于只执行一次的操作:

坏线程:启动一个
线程
使用
线程。睡眠(5000)
,然后使用
myActivity.runOnUiThread(Runnable)
确保您再次进入Ui线程,并再次更改文本

更好的一个:使用异步任务! ->

newasynctask()
{
受保护的void onPreExecute()
{
//用户界面线程
};
@凌驾
受保护的Void doInBackground(字符串…参数)
{
//非ui线程
//在这里做你的第一个动作
尝试
{
睡眠(5000);
}
捕捉(中断异常e)
{
}
返回null;
}
受保护的void onPostExecute(void结果)
{
//用户界面线程
//在这里做你的动作
};
}.执行(“”);

。如果您使用计时器使用
runOnUiThread
更新文本视图,则选中此选项可能会有所帮助。你也可以使用处理程序。我不会重复什么。我只想做一个动作,比如在5秒钟后改变单词的颜色。只做一次。实际上,我不知道如何使用这个网站。你能把链接给我吗?也许我很笨…:(对不起,我不明白,你能简单解释一下吗?你可以在你的应用程序中复制并粘贴此代码。然后你可以在“onBackground”方法中进行逻辑/操作。稍后你可以在“onPostExecute”中再次显示对话框。)
        new AsyncTask<String, Void, Void>()
        {
            protected void onPreExecute()
            {
                // ui thread
            };

            @Override
            protected Void doInBackground(String... params)
            {
                // non ui thread
                // do your first action here
                try
                {
                    Thread.sleep(5000);
                }
                catch (InterruptedException e)
                {
                }
                return null;
            }

            protected void onPostExecute(Void result)
            {
                // ui thread
                // do your seconds action here
            };
        }.execute("");