0

我知道很多问题都会问这个问题,并且有很多关于它的信息。但是,我还没有找到一个示例或完整的解释,关于如何在您的应用程序运行时设置服务并在其中运行一些代码。

具体来说,我想运行这段代码:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

public class SearchingFilesMain {


public static void main(String[] arg) {

    String[] array = new String[1000];
    int checker4 = 0;
    String checker3 = "";
    String checker2 = "";
    String checker1 = "";
    String checker = "";
    int num = 0;

    try {
        Scanner scan = new Scanner(new BufferedReader(new FileReader(
                "C:\\Users\\User\\Desktop\\asciiTracks.txt")));

        while (checker != null) {

            String pattern = "Array Start";
            checker = scan.findWithinHorizon(pattern, 0);

            if(checker.equals("Array Start")){

                String pattern2 = "Array Size";
                checker3 = scan.findWithinHorizon(pattern2, 300);

                if(checker3 != null && checker3.equals("Array Size")){                      

                    checker4 = Integer.parseInt(scan.findInLine("(10000|\\d{1,4})"));
                    System.out.println(checker4);
                    checker1 = scan.findWithinHorizon("DATA ASCII", 500);

                    if(checker1 != null && checker1.equals("DATA ASCII")){
                        scan.nextLine();
                        for(int counter = 0; counter<checker4; counter++){

                            array[num] = scan.nextLine();
                            num++;

                            if(num >999){
                                num = 0;
                            }else{}

                        }

                        for(int counter1 = 0 ; counter1 < 1000 ; counter1++){

                            if(array[counter1] != null){
                            System.out.println(array[counter1]);
                            String values = (array[counter1]).toString();
                            System.out.println(values);
                            String[] valueArray = values.split("\\s+");
                            //no value stored in valueArray[0] index for some reason.
                            System.out.println(valueArray[1]);
                            System.out.println(valueArray[2]);
                            System.out.println(valueArray[3]);
                            System.out.println(valueArray[4]);
                            }else{
                                break;
                                }
                        }

                    }else{
                        System.out.println("DATA ASCII not found");
                    }



                }else{System.out.println("no array size");
                //similar code to that above must go in here at a later point.
                //added similar code so far works perfectly at searching through file! 

                 checker1 = scan.findWithinHorizon("DATA ASCII", 500);

                    if(checker1 != null && checker1.equals("DATA ASCII")){
                        scan.nextLine();
                        for(int counter = 0; counter<checker4; counter++){

                            array[num] = scan.nextLine();
                            num++;

                            if(num >999){
                                num = 0;
                            }else{}

                        }

                        for(int counter1 = 0 ; counter1 < 1000 ; counter1++){

                        if(array[counter1] != null){
                        System.out.println(array[counter1]);
                        String values = (array[counter1]).toString();
                        System.out.println(values);
                        String[] valueArray = values.split("\\s+");
                        //no value stored in valueArray[0] for some reason.
                        System.out.println(valueArray[1]);
                        System.out.println(valueArray[2]);
                        System.out.println(valueArray[3]);
                        System.out.println(valueArray[4]);
                        }else{
                            break;
                            }
                        }

                    }else{
                        System.out.println("DATA ASCII not found");
                    }

                }
    }else{System.out.println("no array start");}}}catch (FileNotFoundException e) {}}}

此代码在文件中搜索关键字和数字,找到与它们相关的数据并将其存储在数组中。我只是想在我的应用程序旁边的后台服务中运行此代码。我希望它将数据发送回我的应用程序,并更新 UI(因此我相信我需要使用 bindservice() )并在我的应用程序启动和停止时启动和停止。

我希望它一直运行,因为在某些时候它将从网络套接字读取数据。

您认为可能有效的任何示例代码以及关于它为什么有效的小解释,或者带有示例代码的非常简单教程的 URL 都会很棒。服务对我来说是全新的,所以如果有更好的方法来做我所描述的,请随时告诉我。

4

1 回答 1

0

我认为这是一个很好的例子,但我相信你已经读过了。http://developer.android.com/reference/android/app/Service.html

如果您希望服务一直运行,您应该使用 startForeground 启动它,这将告诉操作系统在内存不足时不要杀死它。此外,您应该记住,活动可能会在服务运行时被破坏。如果您从服务发送数据,请让活动在服务被销毁时向服务发出信号,这样服务就不会在尝试向不存在的活动发送信息时崩溃。

如果你有 sdk,你可以在 sdk\samples\android-15\ApiDemos\src\com\example\android\apis\ 中找到一些代码示例

搜索服务,您应该找到一个示例,从那里开始并在上面构建。

于 2013-09-12T09:38:36.790 回答