小编dav*_*e.c的帖子

Android应用程序的自定义日志

我想为Android应用程序创建一个自定义记录器.当应用程序生成大量信息时,应在单独的线程中完成日志记录.我不想使用Android日志,因为我需要以特定格式编写日志.多个线程将同时写入日志文件,因此我使用队列来保留日志消息

这是我的代码

Queue<LogEntry> logQueue = new LinkedBlockingQueue<LogEntry>();
LogWritterThread logWritterThread = new LogWritterThread();

// to queue the log messages
public void QueueLogEntry(String message)
{
    LogEntry le = new LogEntry(message);
    {
        logQueue.add(le);
        logQueue.notifyAll();
    }

logWritterThread.start();
}

    class LogWritterThread extends Thread 
{
    public void run() 
    {
        try 
        {
            while(true)
            {
                //thread waits until there are any logs to write in the queue
                if(logQueue.peek() == null)
                    synchronized(logQueue){
                        logQueue.wait();
                    }
                if(logQueue.peek() != null)
                {
                    LogEntry logEntry;
                    synchronized(logQueue){
                        logEntry = logQueue.poll();
                    }

                    // write the message …
Run Code Online (Sandbox Code Playgroud)

java logging android

13
推荐指数
1
解决办法
5269
查看次数

在Webview中打开本地Html文件 - Android

我在根文件夹中保存了一个文件,并尝试在webview中打开它.

这是我保存的代码:

    OutputStream outstream = null;
    outstream = openFileOutput(fileName ,MODE_WORLD_READABLE);

    /// if file the available for writing
    if (outstream != null) {
        /// prepare the file for writing
        OutputStreamWriter outputreader = new OutputStreamWriter(outstream);
        BufferedWriter buffwriter = new BufferedWriter(outputreader);

        /// write the result into the file
        buffwriter.write(result);
    }

    /// close the file
    outstream.close();

} catch (java.io.FileNotFoundException e) {
    System.out.println("File not found in the writing...");
} catch (IOException e) {
    System.out.println("In the writing...");
}
Run Code Online (Sandbox Code Playgroud)

这是我调用文件的代码:

                    fileView.getSettings().setJavaScriptEnabled(true);
            fileView.loadUrl("file:///" + name); <---
Run Code Online (Sandbox Code Playgroud)

并在应用程序内部,它给我一个文件未找到错误.

任何见解都有帮助.

java android

13
推荐指数
3
解决办法
4万
查看次数

如何尊重Android中的网络使用设置

我的应用程序执行一些背景数据收集,我正在添加对用户网络首选项的支持,例如执行后台更新和数据漫游.我已经有以下检查:

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm.getBackgroundDataSetting()) {
...
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
Run Code Online (Sandbox Code Playgroud)

使用清单中的必填项:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
Run Code Online (Sandbox Code Playgroud)

这一切看起来都很好,但我想知道我是否应该检查其他任何东西?我担心检查数据漫游,但是文档声明networkInfo.isAvailable()为我检查这个.那么我需要为网络设置实施任何其他检查吗?我应该注意这个领域还有什么吗?

android

11
推荐指数
2
解决办法
2952
查看次数

使用ViewPager和Fragments

我是初学者Android开发人员.我试图绕过ViewPager.在我尝试使用此示例之前:

http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-horizo​​ntal-view-paging/

我的视图有效,但无法在其中运行功能,我被告知我需要在ViewPager中使用Fragments.

我选择了这个教程:

http://tamsler.blogspot.co.uk/2011/11/android-viewpager-and-fragments-part-ii.html

我有一个ViewPager的基础知识,片段工作:

FragmentPagerActivity.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

public class FragmentPagerActivity extends FragmentActivity {

    private static final int NUMBER_OF_PAGES = 10;

    private ViewPager mViewPager;
    private MyFragmentPagerAdapter mMyFragmentPagerAdapter;

    public void onCreate(Bundle savedInstanceState) {

         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         mViewPager = (ViewPager) findViewById(R.id.viewpager);
         mMyFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
         mViewPager.setAdapter(mMyFragmentPagerAdapter);
    }

    private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {

         public MyFragmentPagerAdapter(FragmentManager fm) {
              super(fm);
         }  

         @Override
         public Fragment getItem(int index) { 

              return PageFragment.newInstance("My Message " + index); …
Run Code Online (Sandbox Code Playgroud)

android http android-viewpager

10
推荐指数
2
解决办法
2万
查看次数

如何从Android AsyncTask进行活动UI更改?

在我有一个将从一个单独的线程(使用AsyncTask)更新的UI的场景中,我可以将AsyncTask定义为活动的内部类,但是这有两个缺点我发现有问题:

  1. 它使源文件非常大,降低了管理代码的效率
  2. 这使得重用线程类变得困难

什么是好的解决方案?使用内部类,但将它所做的一切都抽象到其他类?将对Activity的引用传递给AsyncTask?总是将AsyncTask类定义为内部类,只接受源文件会很大?

oop android android-asynctask

9
推荐指数
2
解决办法
8987
查看次数

由于"获取资源编号值时没有包标识符......"而崩溃

好的,在搜索了我可以在这个主题上找到的各种主题之后,尝试了一些似乎对其他人有用的东西......我已经屈服于发布我自己的问题的必要性.

作为Android和Java的总菜鸟,你将不得不原谅像孩子一样跟我说话的需要:)

我有一个到目前为止有3个活动的应用程序.一个主窗口,用作导航屏幕,用于选择其他两个中的一个.第一个工作完美,但当我尝试2号按钮时......它崩溃了.

我有一些代码,我试图在onCreate上运行...所以当我看到它通常是导致崩溃的XML布局时......我注释掉了Java代码......并且presto布局加载正常.

将代码重新放入,它再次崩溃.

查看LogCat,我看到一行显示"获取资源编号0x0000000d的值时没有包标识符"

然后是关于致命异常和关闭虚拟机的各种线路.

因此,我从其他帖子中获得了信心,我去了R.java文件,看看哪个资源有那个ID ...而且它不在那里.它们全部以0x7f开头...现在唯一以"d"结尾的是具有ID"game_Answer1"的文本视图.但我不确定这是否是它所指的.

我确实尝试过Eclipse clean命令,以及删除R.java ...同样的问题.

下面是似乎崩溃的java代码...再次,在我的意大利面条代码中笑声,因为这是Java中的尝试#2,超越了一个hello world app!


import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import java.util.Random;
public class playgame extends Activity {


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gamelayout);

    //set up first question
    genQuestion();

}


Random generator = new Random();

public void genQuestion() {
    int i = generator.nextInt(25);
    int correct = generator.nextInt(2)+1;
    TextView g_answera = (TextView) findViewById(R.id.game_Answer1);
    TextView g_answerb = (TextView) findViewById(R.id.game_Answer2);
    TextView …
Run Code Online (Sandbox Code Playgroud)

java xml debugging resources android

9
推荐指数
2
解决办法
2万
查看次数

使用getCacheDir时文件在哪里

在我调试时,我发现GetCacheDir返回 /data/data/yourapp/cache/

但是当我存储文件时,我在该路径中找不到任何东西(带有shell),但在/sdcard/Android/data/yourapp/cache/ 我找到了缓存文件?谁能告诉我为什么?

android

7
推荐指数
1
解决办法
1万
查看次数

Android排序数组

我如何按日期或名称对此数组进行排序?

String[][] datetable= new String[21][2];

datetable[0][0] = "2011.01.01";
datetable[0][1] = "Name1";
datetable[1][0] = "2011.01.03";
datetable[1][1] = "Name2";
.
.
.
datetable[20][0] = "2011.02.16";
datetable[20][1] = "Name3";
Run Code Online (Sandbox Code Playgroud)

java android multidimensional-array

7
推荐指数
1
解决办法
1万
查看次数

从Activity外部处理onActivityResult

我正在尝试创建一个帮助器类来启动Activity并获取返回结果(startActivityForResult)以避免开发人员编写自己的onActivityResult代码并封装复杂的内部细节.

即:来电者的代码:

MyIntent i = new MyIntent();
i.getMyData(new OnData() { public void onData(Bundle data) {....} );
Run Code Online (Sandbox Code Playgroud)

我尝试Activity在MyIntent中创建一个"虚拟" 只是为了能够覆盖onActivityResult,但是活动需要在清单中声明,这是帮助程序类试图避免的.没有"setOnActivityResult"这将是一个很好的选择.

那么,如何以Activity编程方式创建并"附加"它以使其具有有效状态?

创建之后new Activity()我想调用内部的活动"附加".

android android-intent android-activity

7
推荐指数
1
解决办法
2784
查看次数

如何使用MediaController.MediaPlayerControl?

我试图使用MediaController.MediaPlayerControl,以便MediaController在我的自定义视图的底部显示,但我无法让它工作.它的崩溃在ctrl.show();具有以下例外,每当我尝试加载这样的观点:

E/AndroidRuntime(3007):引起:android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null无效; 你的活动在运行吗?

这是我的代码.

public class MediaPlayerView extends ImageView implements MediaPlayerControl {

    private MediaPlayer mp;
    private MediaController ctrl;
    private Uri data;
    private Context mContext;

    public MediaPlayerView(Context context, Uri data) {
        super(context);
        this.mContext = context;
        this.data = data;
        init();
    }

    public void init() {
        mp = new MediaPlayer();
        try {
            mp.setDataSource(mContext, data);
            mp.prepare();
        } catch(IOException e) {
            e.printStackTrace();
        }
        ctrl = new MediaController(mContext);
        ctrl.setMediaPlayer(this);
        ctrl.setAnchorView(this);
        ctrl.setEnabled(true);
        ctrl.show();
    }

    public boolean canPause() …
Run Code Online (Sandbox Code Playgroud)

android android-widget

5
推荐指数
2
解决办法
2万
查看次数