急:在android下如何实现,在程序不操作一段时间,执行另一个程序

wzhig 2011-09-05 02:06:12
各位大侠好,我最近在做一个程序,就是在系统一段时间没有被用户操作了,自动让程序运行其他部分,比喻广告视频什么的,请问大侠我怎么实现这样的功能啊??
我知道程序可以通过记录每一项操作都置一下状态和时间来解决,但这种方法太土了吧,还有没有其他更方便的作法?
多谢
...全文
352 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mj12672 2011-12-21
  • 打赏
  • 举报
回复
退出是线程没有结束,一直报错。这个要怎么处理啊?
wzhig 2011-09-07
  • 打赏
  • 举报
回复
楼上的,还有个问题,如何在退出时,撤销该进程呢?
  • 打赏
  • 举报
回复
android開發中,不建議使用System.out

Log或者Toast比較好
  • 打赏
  • 举报
回复
onTouchEvent()換成下面這個
	@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:

resetTime();
break;

default:
break;
}
return super.dispatchTouchEvent(ev);
}
wzhig 2011-09-06
  • 打赏
  • 举报
回复
在楼上的程序基础上,我又做了如下的事,对每个click事件,继承一个类。在这个类中,提供一个方法,重置resetTime(),如下:
class ImgClickListener extends TimerOnClickListener implements OnClickListener {
@Override
public void onClick(View v) {
super.timerReset();
......
}

class TimerOnClickListener {
public void IsecOnClickListener() {
/**
* 重置时间处理流程
*/
public void timerReset() {
long dateTaken = System.currentTimeMillis();
String datetime = DateFormat.format("yyyy:MM:dd kk:mm:ss", dateTaken).toString();
System.out.println("这是 TimerOnClickListener click 时间");

System.out.println(datetime);

resetTime(); //重置时间
return ;
}
}


wzhig 2011-09-06
  • 打赏
  • 举报
回复
楼上的是正解,多谢,我写的程序是多余的,大家不要再看啦。
wzhig 2011-09-05
  • 打赏
  • 举报
回复
好象不太好用,如果点一个button或者editView等等,onTouchEvent并没有执行。
如果点界面的空白处,onTouchEvent就执行了。
我就是不想对每个控件的click事件都做
mHandler.sendMessageDelayed(msg, 30000);//無操作30s后進入廣告

咋整哦?
wzhig 2011-09-05
  • 打赏
  • 举报
回复
非常感谢楼上的例子,真的是好心人,我试试再给分,OK?
  • 打赏
  • 举报
回复
寫了一個簡單的demo,LZ參考一下
package com.xx.demo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.MotionEvent;

public class DemoActivity extends Activity {

private static final int SHOW_ANOTHER_ACTIVITY = 0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Message msg = mHandler.obtainMessage(SHOW_ANOTHER_ACTIVITY);
mHandler.sendMessageDelayed(msg, 30000);//無操作30s后進入廣告
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
resetTime();
break;
default:
break;
}
return true;
}
private void resetTime() {
// TODO Auto-generated method stub
mHandler.removeMessages(SHOW_ANOTHER_ACTIVITY);//從消息隊列中移除
Message msg = mHandler.obtainMessage(SHOW_ANOTHER_ACTIVITY);
mHandler.sendMessageDelayed(msg, 30000);//無操作30s后進入廣告
}

private Handler mHandler = new Handler()
{
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
if(msg.what==SHOW_ANOTHER_ACTIVITY)
{
//跳到廣告的activity
}
}
};
}
wzhig 2011-09-05
  • 打赏
  • 举报
回复
多谢,能不能说详细点,本人开发时间不长,对handler不熟哦
  • 打赏
  • 举报
回复
定義一個Handler mHandler = new Handler();

屏幕的onTouchEvent中 每當有touch事件觸發時
mHandler.removeMessages(...);
Message msg = mHandler.obtainMessage(...);
mHandler.sendMessageDelayed(msg,n)//n為一段時間

總結:程序啟動時,初始化幷發送消息 屏幕有onClick或onTouch事件觸發時,重置message,即重新計時開始

後面怎麼做,就簡單了

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧