如果应用关闭,也会运行流程

时间:2014-03-03 14:07:42

标签: android multithreading process

我正在创建一个应用程序,需要检查文件是否存在,比方说,10秒。如果文件中写有“SEND”,则发送消息,否则不执行任何操作。 我怎么能创建一个线程/进程,如果有文件,每10秒检查一次,即使我关闭应用程序?可能吗? 这是我的代码:

public class BootListener extends BroadcastReceiver {
    public BootListener() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        context.startService(new Intent(context, FileCheckerService.class));
    }
}


public class FileCheckerService extends Service {
    public FileCheckerService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                SmsManager newSms = SmsManager.getDefault();
                newSms.sendTextMessage(
                        "+39334659348",
                        null,
                        "TRY",
                        null,
                        null);
            }
        };

        Timer timer = new Timer();
        timer.schedule(task, 0, 20000);

        return START_STICKY;
    }

    public static String convertStreamToString(InputStream is) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(is));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        reader.close();
        return sb.toString();
    }
}

2 个答案:

答案 0 :(得分:0)

尝试使用服务。详细了解使用服务的正确方法:

http://developer.android.com/reference/android/app/Service.html

答案 1 :(得分:0)

使用带有覆盖startCommand返回Service.start_sticky标志的应用程序上下文创建服务,并在其中设置线程,其中set while循环如下所示

while(true)
 {
    yourThreadReference.sleep(10000); // this is 10 seconds
    // do your work  
 }